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 jQuery $.post $.ajax用法
Jul 09 Javascript
formValidator3.3的ajaxValidator一些异常分析
Jul 12 Javascript
谈谈关于JavaScript 中的 MVC 模式
Apr 11 Javascript
Web表单提交之disabled问题js解决方法
Jan 13 Javascript
js实现每日自动换一张图片的方法
May 04 Javascript
JS中Location使用详解
May 12 Javascript
js省市县三级联动效果实例
Apr 15 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
jQuery中table数据的值拷贝和拆分
Mar 19 Javascript
Angularjs自定义指令实现分页插件(DEMO)
Sep 16 Javascript
vue .js绑定checkbox并获取、改变选中状态的实例
Aug 24 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 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常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
php接口数据加密、解密、验证签名
2015/03/12 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
基于JavaScript 声明全局变量的三种方式详解
2013/05/07 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
JS实现随页面滚动显示/隐藏窗口固定位置元素
2016/02/26 Javascript
jQuery 获取屏幕高度、宽度的简单实现案例
2016/05/17 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
JS实现的简单拖拽功能示例
2017/03/13 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
详解动画插件wow.js的使用方法
2017/09/13 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
vue项目持久化存储数据的实现代码
2018/10/01 Javascript
Python验证码识别处理实例
2015/12/28 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
Python3实现汉语转换为汉语拼音
2019/07/08 Python
python银行系统实现源码
2019/10/25 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
python如何变换环境
2020/07/21 Python
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
洲际酒店集团英国官网:IHG英国
2019/07/10 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
地球物理学专业推荐信
2014/09/08 职场文书
员工工作能力评语
2014/12/31 职场文书
武当山导游词
2015/02/03 职场文书
运动会100米广播稿
2015/08/19 职场文书
初中历史教学反思
2016/02/19 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
springboot+rabbitmq实现智能家居实例详解
2022/07/23 Java/Android