本文最后更新于:January 4, 2022 am
Vue(读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。与其它框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,方便与第三方库或既有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
目录
所谓的计算属性就是用已有的属性(data中的)进行加工计算,然后生成一个全新的属性。一个新的配置项:computed
。
一般形式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="root"> 姓:<input type="" v-model="firstName" /> <br><br> 名:<input type="" v-model="lastName" /> <br><br> 姓名:<span>{{name}}</span> </div> <script type="text/javascript"> Vue.config.productionTip = false
const vm = new Vue({ el:'#root', data:{ firstName:'lee', lastName:'loong' }, computed:{ name:{ get(){ return this.firstName+'-'+this.lastName } } } }) </script> </body> </html>
|
- methods与computed的使用
内部执行
区别
在上面的示例中,使用methods也可以实现。但是两者还是有一定的区别。methods是调用一次就执行一次,调用多少次就执行多少次。而computed是只在第一次调用的时候执行,其他相同的调用都会从缓存中直接取用。只有数据发生了变化,computed才会再一次调用。
上面的是获取值,还可以修改值:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <script type="text/javascript"> Vue.config.productionTip = false
const vm = new Vue({ el:'#root', data:{ firstName:'lee', lastName:'loong', age:18 }, computed:{ name:{ get(){ return this.firstName+'-'+this.lastName }, set(value){ this.age= value } } } }) </script>
|
计算属性的简写
📢注意:只能用于,只有获取值(get),没有修改值(set)的场景下。而且这种场景是比较多的。具体使用方法如下。
| computed:{ name:function(){ return this.firstName+'-'+this.lastName } }
computed:{ name(){ return this.firstName+'-'+this.lastName } }
|
📢注意:要注意方法二中的写法,和methods中的函数写法一样。但是调用的时候是有区别的。
methods与computed的调用区别
- methods:调用时,写函数名,括号可加可不加。如:name()、name都可以。
- computed:调用时,只能写属性名,
不能加括号!
如:name。
小结:每次调用前,先看看是data、methods还是computed中的属性或方法。
完整示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="./js/vue.js"></script> </head> <body> <div id="root"> 姓:<input type="" v-model="firstName" /> <br><br> 名:<input type="" v-model="lastName" /> <br><br> 姓名:<span>{{name}}</span> </div> <script type="text/javascript"> Vue.config.productionTip = false
const vm = new Vue({ el:'#root', data:{ firstName:'lee', lastName:'loong', age:18 }, computed:{ name(){ return this.firstName+'-'+this.lastName } } }) </script> </body> </html>
|