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 只要不改变,计算属性也就不更新


posted @ 2020-05-08 21:07  玄空2  阅读(284)  评论(0编辑  收藏  举报