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 弹出框定位实现方法
Dec 02 Javascript
jQuery操作input type=radio的实现代码
Jun 14 Javascript
javascript 文件的同步加载与异步加载实现原理
Dec 13 Javascript
jQuery.validate 常用方法及需要注意的问题
Mar 20 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
javascript函数中参数传递问题示例探讨
Jul 31 Javascript
浅谈EasyUI中Treegrid节点的删除
Mar 01 Javascript
在JavaScript中对HTML进行反转义详解
May 18 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
Oct 10 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
JavaScript 面向对象基础简单示例
Oct 02 Javascript
Javascript实现简易天数计算器
May 18 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
Wordpress php 分页代码
2009/10/21 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP 极验验证码实例讲解
2016/09/29 PHP
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
2012/05/23 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
jQuery+HTML5+CSS3制作支持响应式布局时间轴插件
2016/08/10 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
jQuery tagsinput在h5邮件客户端中应用详解
2016/09/26 Javascript
easyUI实现类似搜索框关键词自动提示功能示例代码
2016/12/27 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
详解nodejs通过响应回写的方式渲染页面资源
2018/04/07 NodeJs
webpack 3.X学习之多页面打包的方法
2018/09/04 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
python查找特定名称文件并按序号、文件名分行打印输出的方法
2020/04/24 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
电大毕业生自我鉴定
2013/11/10 职场文书
管理科学大学生求职信
2013/11/13 职场文书
大学毕业生个人自荐信范文
2014/01/08 职场文书
三潭印月的导游词
2015/02/12 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
MySQL读取JSON转换的方式
2022/03/18 MySQL