computed依赖其他Vue 示例
计算属性还有两个很实用的小技巧容易被忽略:一是计算属性可以依赖其他计算属性:
计算属性不仅可以依赖当前 Vue 实例的数据,还可以依赖其他实例的数据,
计算属性Computed示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app1">
<input type="text" v-model="name"><br/>
</div>
<div id="app2">
<span>{{reverseText}}</span>
</div>
<script>
var v1=new Vue({
el:"#app1",
data:{
name:""
}
});
var v2=new Vue({
el:"#app2",
computed:{
reverseText:function(){
return v1.name.split(",").reverse().join("-");
}
}
})
</script>
</body>
</html>
二、Methods实现示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app1">
<input type="text" v-model="name"><br/>
</div>
<div id="app2">
<span>{{reverseText()}}</span>
</div>
<script>
var v1=new Vue({
el:"#app1",
data:{
name:""
}
});
var v2=new Vue({
el:"#app2",
methods:{
reverseText:function(){
return v1.name.split(",").reverse().join("-");
}
}
})
</script>
</body>
</html>
methods 里定义了 个方法实现了相同的效果,甚至该方法还可以接受参数,使用起来更灵活。既然使用 methods 就可以实现,那么为什么还需要计算属性呢?
原因就是计算属性是基于它的依赖缓存的。
个计算属性所依赖的数据发生变化时,它才会重新取值,所以text 只要不改变,计算属性也就不更新