vue.js的computed,filter,get,set的用法及区别详解


Posted in Javascript onMarch 08, 2018

1、vue.js的computed方法:

处理复杂逻辑,基于依赖缓存,当依赖发生改变时会重新取值。用methods也可以实现同样的效果,但methods在重新渲染的时候会重新调用执行,在性能上computed优于methods,当不需要缓存时可用methods。

实例1:computed和methods实现翻转字符串

<template>
 <div>
 <input v-model="message">
 <p>原始字符串: {{ message }}</p>
 <p>计算后反转字符串: {{ reversedMessage }}</p>
 <p>使用方法后反转字符串: {{ reversedMessage2() }}</p>
 </div>
</template>

<script>
export default {
 data () {
 return {
 message: 'Runoob123!'
 }
 },
 computed: {
 // 计算属性的 getter
 reversedMessage: function () {
 // `this` 指向 vm 实例
 return this.message.split('').reverse().join('')
 }
 },
 methods: {
 reversedMessage2: function () {
 return this.message.split('').reverse().join('')
 }
 }
}
</script>

执行结果:

vue.js的computed,filter,get,set的用法及区别详解

实例2:computed的get()和set()用法

<template>
 <div>
 	<select v-model="site">
 		<option value="Google http://www.google.com">Google http://www.google.com</option>
 		<option value="baidu http://www.baidu.co">baidu http://www.baidu.com</option>
 		<option value="网易 http://www.163.com">网易 http://www.163.com</option>
 	</select>
 	<p>name:{{name}}</p>
 	<p>url:{{url}}</p>
 </div>
</template>

<script>
export default {
 data () {
 return {
 name: 'Google',
 url: 'http://www.google.com'
 }
 },
 computed: {
 site: {
 // getter
 get: function () {
 return this.name + ' ' + this.url
 },
 // setter
 set: function (newValue) {
 let names = newValue.split(' ')
 this.name = names[0]
 this.url = names[names.length - 1]
 }
 }
 }
}
</script>

执行结果:

vue.js的computed,filter,get,set的用法及区别详解

2、vue.js的过滤器fliter方法:

过滤器是将返回数据进行处理后返回处理结果的简单函数。可是在vue2.0版本被去掉了,替代方法是将函数写在methods里。

实例:

<template>
 <div>
 <input v-model="filterText"/>
 <ul>
 <li v-for="item in obj">
 <span>{{myfilter(item.label)}}</span>
 </li>
 </ul>
 </div>
</template>

<script>
export default {
 data () {
 return {
 obj: [
 {value: 0, label: 'beijing'},
 {value: 1, label: 'shanghai'},
 {value: 2, label: 'guangdong'},
 {value: 3, label: 'zhejiang'},
 {value: 4, label: 'jiangshu'}
 ],
 filterText: ''
 }
 },
 methods: {
 myfilter (value) {
 if (value.indexOf(this.filterText) > -1) {
 return value
 }
 }
 }
}
</script>

执行结果:

vue.js的computed,filter,get,set的用法及区别详解

3、vue.js的get和set方法:

vue中data属性能够响应数据变化内部是将data 的属性转换为 getter/setter,在vue2.0中,get()和set()用于computed计算属性中,在上面的computed实例中已有涉及。另外从vue1.0中继承的vm.$set( object, key, value )用于动态监控数据元素,在实例创建后添加数组属性并且有响应可用该方法实现。

<template>
 <div>
 <input v-model="opt" @blur="add()"/>
 <ul>
 <li v-for="item in arr">
 {{ item }}
 </li>
 </ul>
 </div>
</template>

<script>
export default {
 data () {
 return {
 arr: [ '北京', '上海', '广东', '深圳' ],
 opt: ''
 }
 },
 methods: {
 add () {
 this.$set(this.arr, this.arr.length, this.opt)
 }
 }
}
</script>

执行结果:

vue.js的computed,filter,get,set的用法及区别详解

以上这篇vue.js的computed,filter,get,set的用法及区别详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery 实现的全选和反选
Apr 15 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
javascript事件的传播基础实例讲解(35)
Feb 14 Javascript
Angularjs中的ui-bootstrap的使用教程
Feb 19 Javascript
原生js实现验证码功能
Mar 16 Javascript
AngularJS页面传参的5种方式
Apr 01 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
Jun 06 Javascript
vue.js中父组件调用子组件的内部方法示例
Oct 22 Javascript
vue组件编写之todolist组件实例详解
Jan 22 Javascript
详解Node.js中path模块的resolve()和join()方法的区别
Oct 29 Javascript
Vue项目中最新用到的一些实用小技巧
Nov 06 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 #Javascript
layui select动态添加option的实例
Mar 07 #Javascript
layui表格checkbox选择全选样式及功能的实例
Mar 07 #Javascript
Bootstrap实现可折叠分组侧边导航菜单
Mar 07 #Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
Mar 07 #Javascript
vue.js 嵌套循环、if判断、动态删除的实例
Mar 07 #Javascript
vue2.0 computed 计算list循环后累加值的实例
Mar 07 #Javascript
You might like
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
基于Jquery制作的幻灯片图集效果打包下载
2011/02/12 Javascript
JS添加删除DIV的简单实例
2016/07/08 Javascript
JavaScript中如何使用cookie实现记住密码功能及cookie相关函数介绍
2016/11/10 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
JavaScript递归函数解“汉诺塔”算法代码解析
2018/07/05 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
详解用js代码触发dom事件的实现方案
2020/06/10 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
Python 的 with 语句详解
2014/06/13 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
Python实现线性判别分析(LDA)的MATLAB方式
2019/12/09 Python
opencv 图像轮廓的实现示例
2020/07/08 Python
linux mint中搜狗输入法导致pycharm卡死的问题
2020/10/28 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
体育教育个人自荐信范文
2013/12/01 职场文书
船舶专业个人求职信范文
2014/01/02 职场文书
大学生村官典型材料
2014/01/12 职场文书
普通员工辞职信
2014/01/17 职场文书
职业道德模范事迹材料
2014/08/24 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers