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 相关文章推荐
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
Javascript实现的类似Google的Div拖动效果代码
Aug 09 Javascript
禁用页面部分JavaScript方法的具体实现
Jul 31 Javascript
页面按钮禁用与解除禁用的方法
Feb 19 Javascript
jQuery+ajax中getJSON() 用法实例
Dec 22 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
May 25 Javascript
轻松掌握JavaScript代理模式
Aug 26 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 Javascript
vue项目关闭eslint校验
Mar 21 Javascript
Vue监听事件实现计数点击依次增加的方法
Sep 26 Javascript
JS实现电话号码的字母组合算法示例
Feb 26 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
Mar 14 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 preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
PhotoSwipe异步动态加载图片方法
2016/08/25 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[48:44]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS HGT
2014/05/22 DOTA
python调用cmd命令行制作刷博器
2014/01/13 Python
12步入门Python中的decorator装饰器使用方法
2016/06/20 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
详解python列表(list)的使用技巧及高级操作
2019/08/15 Python
python读取ini配置的类封装代码实例
2020/01/08 Python
Django权限控制的使用
2021/01/07 Python
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
某公司面试题
2012/03/05 面试题
计算机科学与技术应届生求职信
2013/11/07 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
意向书范文
2014/03/31 职场文书
联片教研活动总结
2014/07/01 职场文书
远程培训的心得体会
2014/09/01 职场文书
初中家长评语大全
2014/12/26 职场文书
2016年端午节校园广播稿
2015/12/18 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
python关于集合的知识案例详解
2021/05/30 Python