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 相关文章推荐
javascript Array.remove() 数组删除
Aug 06 Javascript
ExtJS4中使用mixins实现多继承示例
Dec 03 Javascript
JS中window.open全屏命令解析及使用示例
Dec 11 Javascript
jquery的ajax简单结构示例代码
Feb 17 Javascript
jquery用offset()方法获得元素的xy坐标
Sep 06 Javascript
简述Matlab中size()函数的用法
Mar 20 Javascript
微信小程序实现皮肤功能(夜间模式)
Jun 18 Javascript
JS实现仿UC浏览器前进后退效果的实例代码
Jul 17 Javascript
Javascript中弹窗confirm与prompt的区别
Oct 26 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
Apr 02 Javascript
H5+css3+js搭建带验证码的登录页面
Oct 11 Javascript
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
详解从买域名到使用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 高手之路(三)
2006/10/09 PHP
解析php中const与define的应用区别
2013/06/18 PHP
PHP快速推送微信模板消息
2017/04/14 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
Js的MessageBox
2006/12/03 Javascript
不错的新闻标题颜色效果
2006/12/10 Javascript
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
显示今天的日期js代码(阳历和农历)
2014/09/30 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
Three.js快速入门教程
2016/09/09 Javascript
关于RequireJS的简单介绍即使用方法
2016/10/20 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
详解AngularJS2 Http服务
2017/06/26 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
三查三看党性分析材料
2014/02/18 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
赡养老人协议书
2014/04/21 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
成都人事代理协议书
2014/10/25 职场文书
群众路线调研报告范文
2014/11/03 职场文书
教师工作态度自我评价
2015/03/05 职场文书
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android