Vue学习3:计算属性computed与监听器
下面是计算属性相关代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue3</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--<link rel="stylesheet" type="text/css" href="main.css"/>-->
<script src="vue.js"></script>
</head>
<body>
<!--计算属性computed,可以用在一些复杂逻辑上-->
<div id="app">
<!--1.模板中逻辑过重,不易维护-->
<p>{{msg.split('').reverse().join('')}}</p><br>
<!--2.用上computed属性,适用于复杂逻辑-->
<p>原值:{{msg}}</p>
<p>使用computed:字符串反转后的值:{{reverseMsg}}</p><br>
<!--3.用methods-->
<p>原值:{{msg}}</p>
<p>使用methods:字符串反转后的值:{{reverseMsg1()}}</p><br>
<!--我们可以发现computed属性和methods得到的结果是一样的。但是computed是基于它的缓存依赖(例子中指vm.msg),
只有相关依赖改变才会重新取值;但是methods,每次重新渲染时,都会重新取值-->
<!--所以说一般computed性能更好--> <!--计算属性默认只有getter,不过我们可以设置setter-->
<p>{{fullName}}</p>
<p>{{firstName}}</p>
<p>{{lastName}}</p>
</div> <script>
var vm=new Vue({
el: '#app',
//选项对象
data:{
msg:'hello',
firstName:'Smith',
lastName: 'Lee'
},
//声明计算属性,提供的函数将用作vm.reverseMsg的getter
//vm.reverseMsg依赖于vm.msg;vm.msg改变时,vm.reverseMsg也会改变
computed:{
//计算属性的getter
reverseMsg:function(){
return this.msg.split('').reverse().join('');
},
fullName:{
get:function(){
return this.firstName+' '+this.lastName;
},
set:function(newValue){
var value=newValue.split(' ');
this.firstName=value[0];
this.lastName=value[1];
}
} },
methods:{
reverseMsg1:function(){
return this.msg.split('').reverse().join('');
}
}
});
vm.fullName='John Lee';
</script>
</body>
</html>

2.下面是监听器相关代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue4 监听属性</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--<link rel="stylesheet" type="text/css" href="main.css"/>-->
<script src="vue.js"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="meter">
<input type="text" v-model="kilometer">
<p class="test"></p>
</div>
<!--其实计算属性在大多数时候更合适,但是当数据执行异步操作或开销较大的操作时,需要采用监听器操作-->
<script>
var vm=new Vue({
el: '#app',
data:{
meter:'',
kilometer: ''
},
watch:{
//watch创建了meter和kilometer两个方法
meter:function(val){
this.meter=val;
this.kilometer=val/1000;
},
kilometer:function(val){
this.kilometer=val;
this.meter=val*1000;
}
}, });
vm.$watch('meter',function(newValue,oldValue){
document.getElementsByClassName('test')[0].innerHTML="meter新值:"+newValue+ ";" + "meter旧值:"+oldValue;
})
</script>
</body>
</html>
在第一个输入框中输入123后,运行结果:

参考:https://cn.vuejs.org/v2/guide/,http://www.runoob.com/vue2
Vue学习3:计算属性computed与监听器的更多相关文章
- VUE学习之计算属性computed
计算属性:computed 先看一下官网的说法 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="ex ...
- Vue教程:计算属性computed与侦听器watch(三)
计算属性computed 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...
- [Vue]method与计算属性computed、侦听器watch与计算属性computed的区别
一.方法method与计算属性computed的区别 方法method:每当触发重新渲染时,调用方法method将总会再次执行函数: 计算属性computed:计算属性computed是基于它们的响应 ...
- 怎样理解 Vue 中的计算属性 computed 和 methods ?
需求: 在 Vue 中, 我们可以像下面这样通过在 引号 或 双花括号 内写 js 表达式去做一些简单运算, 这是可以的, 不过这样写是不直观的, 而且在 html 中 夹杂 一些运算逻辑这种做法其实 ...
- vue的计算属性computed和监听器watch
<template> <div> this is A.vue <br> <!--计算属性--> <label for="msg" ...
- Vue.js学习 Item5 -- 计算属性computed与$watch
在模板中绑定表达式是非常便利的,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护.这就是为什么 Vue.js 将绑定表达式限制为一个表达式.如果需 ...
- vue学习笔记 计算属性(四)
计算属性就是vue实例里的computed属性,对应一个对象,里面可以放各种方法,方法的作用就是可以生成和数据变量对应的计算后的变量,跟数据相关的复杂逻辑变量,都可以使用计算属性实现,computed ...
- Vue学习之--------计算属性(2022/7/9)
文章目录 1.计算属性 1.1 计算属性实现 1.1.1 基础知识 1.1.2 代码实例 1.1.3 测试效果 1.2 计算属性简写 1.2.1 简写代码 1.3 使用插值语法实现 1.3.1 代码实 ...
- vue监听器watch & 计算属性computed
侦听器watch vue中watch是用来监听vue实例中的数据变化 watch监听时有几个属性: handle:其值是一个回调函数,就是监听对象对话的时候需要执行的函数 deep:其值true 或者 ...
随机推荐
- ARC 103
目录 官方题解 C 官方题解 C 这道题教会了我怎样正确统计众数和第二众数........... 我之前的方法是错的 #include <bits/stdc++.h> using name ...
- java @Override 报错解决
有时候Java的Eclipse工程换一台电脑后编译总是@override报错,把@override去掉就好了,但不能从根本上解决问题,因为有时候有@override的地方超级多. 这是jdk的问题,@ ...
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of SPb
A. Base $i - 1$ Notation 两个性质: $2=1100$ $122=0$ 利用这两条性质实现高精度加法即可. 时间复杂度$O(n)$. #include<stdio.h&g ...
- VS的Mvc项目右键没有控制器右键菜单(转)
今天遇到了一个比较少见的问题,我用vs2012打开一个从Svn上拉下来的mvc5项目,在Controller文件夹上右键却发现没有新建控制器的选项,在View文件夹上右键也没有新建视图的选项. 我的第 ...
- 在docker中安装mysql
#!/bin/sh # 安装docker # 在docker中安装mysql # 解决了docker容器中无法输入中文的问题 ##########################安装docker # ...
- Mac_配置jdk环境变量
进入命令行 cd ~ touch .bash_profile vi .bash_profile 输入内容jdk变量配置内容: JAVA_HOME=/Library/Java/JavaVirtualMa ...
- Java虚拟机一 运行时数据区(栈、堆、方法区等)
Java虚拟机的内存管理主要分两点:内存分配以及内存回收.· 一.内存分配图: 注: 所占区域的大小与实际的内存大小比例并无直接关系. 解读: 1.如图,分成两种颜色的内存区域,其中蓝色的是线程隔离的 ...
- Codechef July Challenge 2018 : Picking Fruit for Chefs
传送门 好久没写题解了,就过来水两篇. 对于每一个人,考虑一个序列$A$,$A_I$表示当k取值为 i 时的答案. 如果说有两个人,我们可以把$(A+B)^k$二项式展开,这样就发现把两个人合并起来的 ...
- __x__(47)0910第六天__IE6到IE11对于包含中文路径的png显示问题
问题:IE6额外地除了中文路径外,对于png24的支持度不高,以致于无法透明. 解决方法1,png8 替换: png8 比 png24 小,质量较低,但是在这里可以替代,以解决问题. 使用 ps 打开 ...
- FloatingActionButton的使用