vue各种事件监听实例(小结)


Posted in Javascript onJune 24, 2020

计算属性的Get方法和Set方法

看代码说话:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue小练习</title>
</head>
<body>
  <div id="calc">
    <a v-cloak="">{{name}}</a>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      counter:0
    }
    ,methods:{
    }
    ,computed: {
      name: {
        get: function(){
          console.log("得值");
          return 'AAAa';
        },
        set: function(){
          console.log("设值");
          
        }
      }
    }

  })

</script>

运行后如下:

vue各种事件监听实例(小结)

可以知道,在计算属性对象中,里面定义一个name,通过定义name的set和get方法来对其值进行设置和获取,name获得get函数return的值,name通过set函数进行设置其值,或者说改变他的值。从运行图可以看到,当页面加载的时候,当我用到name的变量的时候,他会默认执行get方法,当我在控制台中改变其值,他会默认执行set方法。

methods中函数执行和computer计算的对比

这两个方式都可以对值进行拼接或者进行复杂操作。那么哪个方法性能比较好呢?答案是computed,原因在于computed内部有缓存。看代码如下来计算分别调用了函数多少次:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue小练习</title>
</head>
<body>
  <div id="calc">
    <a v-cloak="">{{name}}</a>
    <a v-cloak="">{{name}}</a>
    <a v-cloak="">{{name}}</a>
    <a v-cloak="">{{name}}</a>
    <hr>
    <a v-cloak="">{{a()}}</a>
    <a v-cloak="">{{a()}}</a>
    <a v-cloak="">{{a()}}</a>
    <a v-cloak="">{{a()}}</a>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      counter:0
    }
    ,methods:{
      a :function(){
        console.log("执行了一次函数");
        return 'AAAa';
      }
    }
    ,computed: {
      name: {
        get: function(){
          console.log("得值");
          console.log("执行了一次 计算属性的get方法");
          return 'AAAa';
        },
        set: function(){
          console.log("设值");
          
        }
      }
    }

  })

</script>

块级作用域

vue各种事件监听实例(小结)

那什么时候改用let,什么时候用const呢。是变量则用let,静态常量则是const。

事件监听

上面已经数说了,标签点击事件,下面我们来说一下,v-on的语法糖,也就是类似v-bind的语法糖为:,, v-on的语法糖为@。代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue事件监听练习</title>
</head>
<body>
  <div id="calc">
    <a id="num">{{num}}</a>
    <button @click="add">+1</button>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      num: 0
    }
    ,methods:{
      add: function(){
        this.num ++;
      }
    }
    ,computed: {
    }
  })

</script>

运行效果如下:

vue各种事件监听实例(小结)

**传参情况,**代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue事件监听练习</title>
</head>
<body>
  <div id="calc">
    <a id="num">{{num}}</a>
    <button @click="add(num,$event)">*2</button>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      num: 1
    }
    ,methods:{
      add: function(param,event){
        console.log(param);
        console.log(event);
        this.num = param * 2;
      }
    }
    ,computed: {
    }
  })

</script>

运行如下:

vue各种事件监听实例(小结)

监听获得event对象,里面可以有点击事件详情,代码如下:

vue各种事件监听实例(小结)

说明:

在上面的代码中,

<button @click="add(num,$event)">*2</button>

num则被vue解释成变量,$event带有美元符号的修饰的变量,则被视为是事件。就是说,当你在网页上对键盘或者鼠标有动作的时候,他会生成事件,这个事件可以被检测到,可以进行传递。

修饰符阻止冒泡

在vue中,我们如果没有组织冒泡,那么请看是下面这样:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue事件监听练习</title>
</head>
<body>
  <div id="calc" @click="adda">
    <button @click="add">点我</button>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      num: 1
    }
    ,methods:{
      add: function(){
        console.log("点击了按钮")
      }
      ,adda: function(){
        console.log("点击了div")
      }
    }
    ,computed: {
    }
  })

</script>

运行结果如下:

vue各种事件监听实例(小结)

那么vue的阻止事件冒泡方法很简答,代码修改如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue事件监听练习</title>
</head>
<body>
  <div id="calc" @click="adda">
    <a >我不是按钮</a>
    <button @click.stop="add" >点我</button>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      num: 1
    }
    ,methods:{
      add: function(){
        console.log("点击了按钮")
      }
      ,adda: function(){
        console.log("点击了div")
      }
    }
    ,computed: {
    }
  })

</script>

运行如下:

vue各种事件监听实例(小结)

vue回车事件获取输入框的值

代码如下:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue事件监听练习</title>
</head>
<body>
  <div id="calc" @click="adda">
    <a >我不是按钮</a>
    <button @click.stop="add" >点我</button>
    <input type="text" @keyup.enter="console">
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      num: 1
    }
    ,methods:{
      add: function(){
        console.log("点击了按钮")
      }
      ,adda: function(){
        console.log("点击了div")
      }
      ,console: function(event){
        console.log(event.target.value);
      }
    }
    ,computed: {
    }
  })

</script>

运行效果如下:

vue各种事件监听实例(小结)

通过使用@Keyup.enter事件来进行对输入框input的事件监听。

Vue的阻止表单提交的监听

通常情况下,默认form的submit一点击提交,就立即跳转,情况如下:

vue各种事件监听实例(小结)

我们有时候希望点击提交submit类型的input按钮的时候,不要立即跳转到action页面,那么我们可以通过如下代码来实现:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>vue事件监听练习</title>
</head>
<body>
  <div id="calc">
    <form action="www.erremall.top" @click.prevent="judge" >
      <input type="submit">
    </form>
  </div>
</body>
</html>
<script src="./js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#calc'
    ,data: {
      num: 1
    }
    ,methods:{
      judge: function(){
        //在这里,对数据进行校验。不先提交
        console.log("来了这里,没有立即跳转");
      }
    }
    ,computed: {
    }
  })

</script>

运行效果如下:

vue各种事件监听实例(小结)

到此这篇关于vue各种事件监听实例(小结)的文章就介绍到这了,更多相关vue 事件监听内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
基于jquery 的一个progressbar widge
Oct 29 Javascript
javascript模拟实现ajax加载框实例
Oct 15 Javascript
jquery搜索框效果实现方法
Jan 16 Javascript
JavaScript中Cookies的相关使用教程
Jun 04 Javascript
深入理解jQuery之防止冒泡事件
May 24 Javascript
jQuery EasyUI Tab 选项卡问题小结
Aug 16 Javascript
javascript 数组去重复(在线去重工具)
Dec 17 Javascript
javascript高仿热血传奇游戏实现代码
Feb 22 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 Javascript
基于JavaScript实现大文件上传后端代码实例
Aug 18 Javascript
node中使用shell脚本的方法步骤
Mar 23 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
Jun 24 #Javascript
javascript实现前端成语点击验证
Jun 24 #Javascript
vue单文件组件无法获取$refs的问题
Jun 24 #Javascript
JS实现数据动态渲染的竖向步骤条
Jun 24 #Javascript
javascript实现评分功能
Jun 24 #Javascript
javascript实现移动端红包雨页面
Jun 23 #Javascript
JS实现canvas简单小画板功能
Jun 23 #Javascript
You might like
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
让iframe框架网页在任何浏览器下自动伸缩
2006/08/18 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
搭建pomelo 开发环境
2014/06/24 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
Jquery日历插件制作简单日历
2015/10/28 Javascript
jquery中用函数来设置css样式
2016/12/22 Javascript
原生js实现对Ajax的封装(仿jquery)
2017/01/22 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
创建简单的node服务器实例(分享)
2017/06/23 Javascript
解读ES6中class关键字
2017/11/20 Javascript
React Native 截屏组件的示例代码
2017/12/06 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python3实现购物车功能
2018/04/18 Python
用python的turtle模块实现给女票画个小心心
2019/11/23 Python
全球知名旅游社区巴西站点:TripAdvisor巴西
2016/07/21 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
教师个人自我鉴定
2014/02/08 职场文书
社区党建工作方案
2014/06/10 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
nginx日志格式分析和修改
2022/04/28 Servers