类型:{ [key: string]: Function | { get: Function, set: Function } }

  计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。注意,如果某个依赖 (比如非响应式属性) 在该实例范畴之外,则计算属性是不会被更新的。

  computed用来监控自己定义的变量,有data、props中的数据,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行展示出结果或者用作其他处理;

  computed比较适合对多个变量或者对象进行处理后返回一个结果值,也就是数多个变量中的某一个值发生了变化则我们监控的这个值也就会发生变化,举例:购物车里面的商品列表和总金额之间的关系,只要商品列表里面的商品数量发生变化,或减少或增多或删除商品,总金额都应该发生变化。这里的这个总金额使用computed属性来进行计算是最好的选择

<template>
<div>
<ul>
<li v-for="item in list" :key='item.name'>
<span>{{item.name}}</span>
<input type="text" v-model="item.age">
</li>
<li>
<span>总数</span>
<span>{{totalAge}}</span>
</li>
</ul>
<ul>
<li>
<input type="text" v-model="setName">
<input type="button" value="提交" @click="setFullName">
</li>
<li>
<span>firstName</span>
<input type="text" v-model="firstName">
</li>
<li>
<span>lastName</span>
<input type="text" v-model="lastName">
</li>
<li>
<span>fullName</span>
<span>{{fullName}}</span> <!-- 不建议使用v-model来改变fullName的值,会出现问题,本来computed就是计算的意思 -->
<!-- <input type="text" v-model="lastName"> -->
</li>
</ul>
</div>
</template> <script>
export default {
data() {
return {
list: [
{
name: 'nike',
age:
},
{
name: 'adidias',
age:
},
{
name: 'lining',
age:
}
],
firstName: '',
lastName: '',
setName: ''
}
},
methods:{
setFullName(){
this.fullName = this.setName;//通过函数设置fullName,不建议v-model来设置fullName
}
},
computed:{
// 仅读取
totalAge(){
let total =
let me = this
for (let i = ; i < me.list.length; i++) {
total += parseInt(me.list[i].age)
}
return total
},
// 读取和设置
fullName: { //
//读取
get(){ //回调函数 当需要读取当前属性值是执行,根据相关数据计算并返回当前属性的值
return this.firstName + ' : ' + this.lastName;
},
//设置
set(val){ //监视当前属性值的变化,当属性值发生变化时执行,更新相关的属性数据
//val就是fullName的最新属性值
console.log(val)
const names = val.split(' ');
console.log(names)
this.firstName = names[];
this.lastName = names[names.length-];
}
}
}
}
</script>
<style>
ul{
width: 400px;
margin: auto;
}
li{
width: %;
overflow: hidden;
margin-bottom: 10px;
}
span{
float: left;
margin: 5px;
padding: 0px 20px;
width: 100px;
text-align: right;
}
li span:nth-child(){
text-align: center;
}
input{
height: 20px;
}
</style>

vue 的计算属性computed自我理解的更多相关文章

  1. Vue.js 计算属性(computed)

    Vue.js 计算属性(computed) 如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护.对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到 ...

  2. vue的计算属性computed和监听器watch

    <template> <div> this is A.vue <br> <!--计算属性--> <label for="msg" ...

  3. Vue之计算属性Computed和属性监听Watch,Computed和Watch的区别

    一. 计算属性(computed) 1.计算属性是为了模板中的表达式简洁,易维护,符合用于简单运算的设计初衷. 例如: <div id="app"> {{ myname ...

  4. 浅谈Vue中计算属性computed的实现原理

    虽然目前的技术栈已由Vue转到了React,但从之前使用Vue开发的多个项目实际经历来看还是非常愉悦的,Vue文档清晰规范,api设计简洁高效,对前端开发人员友好,上手快,甚至个人认为在很多场景使用V ...

  5. vue中计算属性computed方法内传参

    vue中computed计算属性无法直接进行传参 如果有传参数的需求比如说做数据筛选功能可以使用闭包函数(也叫匿名函数)实现 例如: 在上篇博客vue安装使用最后的成绩表练习中的过滤功能的实现: &l ...

  6. Vue.js 计算属性computed和methods的区别

    在vue.js中,有methods和computed两种方式来动态当作方法来用的 如下: 两种方式在这种情况下的结果是一样的 写法上的区别是computed计算属性的方式在用属性时不用加(),而met ...

  7. 怎样理解 Vue 中的计算属性 computed 和 methods ?

    需求: 在 Vue 中, 我们可以像下面这样通过在 引号 或 双花括号 内写 js 表达式去做一些简单运算, 这是可以的, 不过这样写是不直观的, 而且在 html 中 夹杂 一些运算逻辑这种做法其实 ...

  8. 浅谈Vue中计算属性(computed)和方法(methods)的差别

    浅谈Vue中计算属性(computed)和方法(methods)的差别 源码地址 methods方法和computed计算属性,两种方式的最终结果确实是完全相同 计算属性是基于它们的响应式依赖进行缓存 ...

  9. Vue学习3:计算属性computed与监听器

    下面是计算属性相关代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

随机推荐

  1. Mybaties原理图

  2. Cloud Design Patterns: Prescriptive Architecture Guidance for Cloud Applications

    January 2014 Containing twenty-four design patterns and ten related guidance topics, this guide arti ...

  3. 编写高质量代码改善C#程序的157个建议——建议56:使用继承ISerializable接口更灵活地控制序列化过程

    建议56:使用继承ISerializable接口更灵活地控制序列化过程 接口ISerializable的意义在于,如果特性Serializable,以及与其像配套的OnDeserializedAttr ...

  4. Extjs Hello extjs

    <html > <head runat="server"> <title></title> <link rel="s ...

  5. C#多线程编程实战1.7前台线程和后台线程

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  6. WinForm中DataGridView的使用(六) - 特殊处理的小地方

    列标题不能居中的解决方法 一般列标题的居中我们都使用this.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignmen ...

  7. 【大数据之数据仓库】GreenPlum PK DeepGreen(TPCH)

    1.背景 一张UML类图可以简单的说明GreenPlum和DeepGreen之间的关系: GreenPlum: 主页:http://greenplum.org/ 源码:开源,https://githu ...

  8. 动态内存分配存在的问题(内存空洞)------c++程序设计原理与实践(进阶篇)

    new的问题究竟在哪里呢?实际上问题出在new和delete的结合使用上.考察下面程序中内存分配和释放过程: while(1){ Big* p=new big; //...... Small* n1= ...

  9. Codeforces Round #546 (Div. 2)D(贪心,思维,SET,VECTOR,模拟)

    #include<bits/stdc++.h>using namespace std;int a[300007],b[500007],c[500007];set<int>st[ ...

  10. python3入门之字典

    获得更多资料欢迎进入我的网站或者 csdn或者博客园 本节主要介绍字典,字典也成映射,时python中唯一内建的映射类型.更多详细请点击readmore.下面附有之前的文章: python入门之字符串 ...