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 相关文章推荐
简单选项卡 js和jquery制作方法分享
Feb 26 Javascript
js函数模拟显示桌面.scf程序示例
Apr 20 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
jquery实现聚光灯效果的方法
Feb 06 Javascript
原生js和jquery实现图片轮播特效
Apr 23 Javascript
jQuery Ajax页面局部加载方法汇总
Jun 02 Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 Javascript
jQuery实现经典的网页3D轮播图封装功能【附源码下载】
Feb 15 jQuery
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
JavaScript HTML DOM元素 节点操作汇总
Jul 29 Javascript
layui use 定义js外部引用函数的方法
Sep 26 Javascript
javascript头像上传代码实例
Sep 28 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
memcache命令启动参数中文解释
2014/01/13 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
使用php从身份证号中获取一系列线索(星座、生肖、生日等)
2016/05/11 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
PHP查询大量数据内存耗尽问题的解决方法
2016/10/28 PHP
php递归函数怎么用才有效
2018/02/24 PHP
PHP抽象类与接口的区别详解
2019/03/21 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
JS中toFixed()方法引起的问题如何解决
2012/11/20 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
js+div+css下拉导航菜单完整代码分享
2016/12/28 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
EasyUI为Numberbox添加blur事件的方法
2017/03/05 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
详解python的webrtc库实现语音端点检测
2017/05/31 Python
python贪吃蛇游戏代码
2020/04/18 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
python实现双人五子棋(终端版)
2020/12/30 Python
高一自我鉴定
2013/12/17 职场文书
自我评价格式
2014/01/06 职场文书
企业精神口号
2014/06/11 职场文书
小学生植树节活动总结
2014/07/04 职场文书
新员工试用期自我评价
2015/03/10 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
会议营销主持词
2015/07/03 职场文书
记者节感言
2015/08/03 职场文书
学习《中小学教师职业道德规范》心得体会
2016/01/18 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
我的收音机情缘
2022/04/05 无线电