Vue.js 基础学习计算属性computed

我们要写一个成绩表如下

数学 90
物理 80
英语 70
<div id="app">
<table border="1">
<tr>
<td>数学</td>
<td>{{ math }}</td>
</tr>
<tr>
<td>物理</td>
<td>{{ physics }}</td>
</tr>
<tr>
<td>英语</td>
<td>{{ english }}</td>
</tr>
</table>
</div>
var app = new Vue({
        el : ‘#app‘,
        data : {
            math : 90,
            physics : 80,
            english : 70,
        }
    });

接下来我们要添加总分和平均分,

<tr>
                <td>总分</td>
                <td>{{math + physics + english}}</td>
            </tr>
            <tr>
                <td>平均分</td>
                <td>{{ Math.round((math + physics + english)/3) }}</td>
            </tr>

这时我们在td中加的东西很多,这样很不好,这时Vue提供了一个计算属性computed

为了方便观察我们同时将tr中的内容换成input来观察动态变化

<div id="app">
        <table border="1">
            <tr>
                <td>数学</td>
                <td><input type="text" v-model="math"></td>
            </tr>
            <tr>
                <td>物理</td>
                <td><input type="text" v-model="physics"></td>
            </tr>
            <tr>
                <td>英语</td>
                <td><input type="text" v-model="english"></td>
            </tr>
            <tr>
                <td>总分</td>
                <td>{{ sum }}</td>
            </tr>
            <tr>
                <td>平均分</td>
                <td>{{ average }}</td>
            </tr>
        </table>
    </div>
var app = new Vue({
        el : ‘#app‘,
        data : {
            math : 90,
            physics : 80,
            english : 70,
        },
        computed : {
            sum : function(){
                return this.math + this.physics + this.english;
            },
            average : function() {
                return Math.round(this.sum/3);
            }
        }
    });

在app中加入computed 这时我们就可以动态的观察各科分数改变总分和平均分对应改变,但是由于input中输入内容会被自动转换成字符串类型,所以我们应该保证它是number类型,我们可以使用v-model的number修饰符,也可以在数据上进行处理,v-model上加修饰符就不说了,在computed中的sum对应的方法中给每个数据加一个parseFloat转换为number,

computed : {
            sum : function(){
                return parseFloat(this.math) + parseFloat(this.physics) + parseFloat(this.english);
            },
            average : function() {
                return Math.round(this.sum/3);
            }
        }

这时,改变各科成绩就可以看到总分平均分对应的改动了。

时间: 2024-10-18 14:03:13

Vue.js 基础学习计算属性computed的相关文章

Vue.js 基础学习

今天我开始了Vue.js 的学习. 那么什么是Vue.js 呢? Vue.js是一套开发Web页面的JavaScript脚本框架.听起来感觉很难,不过据说,Vue.js是Web-Javascript脚本框架中最容易上手的框架.所以我便选择了先来学习这个. 要学习Vue.js首先就要获取库文件了,在网上有很多地方可以找到,我是在bootcdn上找到的 接下来我们通过Vue输出一串Hello World ! 首先引入vue. <script src="https://cdn.bootcss.c

vue.js使用之计算属性与方法返回的差别

<!DOCTYPE html> <html> <head> <script src="https://unpkg.com/[email protected]"></script> <meta charset="utf-8" /> <title></title> </head> <body> <div id="app-6"&

Vue.js 基础学习 v-on 指令

在前面的基础学习中已经写了v-for和v-bind两个指令 今天学习v-on指令 v-on指令:用来绑定事件的body中 <div id="app"> </div> script中 var app = new Vue({ el : '#app', methods : { } }) 在div app中加入一个button并绑定一个点击事件 <button v-on:click="onClick">点我</button>

Vue.js系列之四计算属性和观察者

一.计算属性 1.模版内的表达式非常便利,但是设计它们的初衷是用于简单计算的.在模版中放入太多的逻辑运算会让模版过重且难以维护,例如如下代码: <div id="example"> {{ message.split('').reverse().join('') }} </div> 在这个地方,模版不在是简单的声明式逻辑,你必须看一段时间才能意识到,这里是想要显示变量message的翻转字符串,当你想要在模版中多次引用此处的翻转字符串时,就会更加难以处理. 所以,

Vue.js 基础学习之组件

什么是组件:组件是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能.在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展. 创建全局组件 <div id="seg1"> <alert></alert> </div> <div id="seg2"> <alert></alert>

Vue.js 基础学习之混合mixins

混合以一种灵活的方式为组件提供分布复用功能.混合对象可以包含任意的组件选项.当组件使用了混合对象时,混合对象的所有选项将被"混入"组件自己的选项中. 当混合对象与组件包含同名选项时,这些选项将以适当的策略合并.例如,同名钩子函数被并入一个数组,因而都会被调用.另外,混合的钩子将在组件自己的钩子之前调用. 我自己的理解是:混合就是将一些相似组件的相同部分用一个对象封装起来,实现代码的复用.当然如果在组件中重新定义某些东西就会覆盖掉来自混合的相应部分. 混合的使用:首先将公共部分写入一个对

vue.js基础学习(2)

vm=new vue({ date:{name:"aa", user:{"name":"lsm"}}); 获取属性值 1:vm.name 2:vm.$data.name 3:获取vue关联的实例  vm.$el vm.$el.style.color="red" 4:获取自定义属性 vm.$options.name 5:获取所有添加了ref属性的元素 vm.$refs         <h2 ref="hello

Vue.js 基础学习之过滤器

过滤器:filter 格式化变量的输出内容,只用于一些简单的在制作的最后一步对内容的输出格式做些调整(如日期格式化,字母大小写,数字再计算等等) 例如我们需要将最终的结果字符串以大写方式展示出来,还有将小数转化成百分比之后再显示出来 <div id="app"> <input type="text" v-model='message'> {{ message | toupper }} <br /> <input type=&

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

需求: 在 Vue 中, 我们可以像下面这样通过在 引号 或 双花括号 内写 js 表达式去做一些简单运算, 这是可以的, 不过这样写是不直观的, 而且在 html 中 夹杂 一些运算逻辑这种做法其实并不好. 最理想的情况是: html 只负责展示, 绑定的数据都是 赤裸裸 的 变量, 而非 表达式 , 这样就会比较人性化. 想要达到这种效果可以有两种方法: computed 和 methods. 1. 使用 methods 相当于是为这个 字符串倒序 的功能单独写了一个函数, 这个函数在 Vu