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代码
Feb 11 Javascript
javascript json2 使用方法
Mar 16 Javascript
JS文字球状放大效果代码分享
Aug 19 Javascript
一种新的javascript对象创建方式Object.create()
Dec 28 Javascript
Vue项目中引入外部文件的方法(css、js、less)
Jul 24 Javascript
解决React Native端口号修改的方法
Jul 28 Javascript
jQuery获取复选框选中的当前行的某个字段的值
Sep 15 jQuery
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
Node.js学习之地址解析模块URL的使用详解
Sep 28 Javascript
利用Dectorator分模块存储Vuex状态的实现
Feb 05 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
解决vant title-active-color与title-inactive-color不生效问题
Nov 03 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中的phpinfo()函数
2013/06/06 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
PHP入门教程之表单与验证实例详解
2016/09/11 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
laravel 判断查询数据库返回值的例子
2019/10/11 PHP
js 获取Listbox选择的值的代码
2010/04/15 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
JS+flash实现chrome和ie浏览器下同时可以复制粘贴
2013/09/22 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
基于vue配置axios的方法步骤
2017/11/09 Javascript
解决iview打包时UglifyJs报错的问题
2018/03/07 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
python登录pop3邮件服务器接收邮件的方法
2015/04/30 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
2019/08/20 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
美国流行背包品牌:JanSport(杰斯伯)
2018/03/02 全球购物
施华洛世奇意大利官网:SWAROVSKI意大利
2018/07/23 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
PHP面试题-$message和$$message的区别
2015/12/08 面试题
求职简历推荐信范文
2013/12/02 职场文书
社区工作者演讲稿
2014/05/23 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
2015年七一建党节演讲稿
2015/03/19 职场文书
签字仪式主持词
2015/07/03 职场文书
文明上网主题班会
2015/08/14 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书