是否可以使用计算属性来计算Vue中的其他属性?

时间:2016-12-15 21:56:36

标签: javascript vue.js

如果我有两个这样的计算属性,

computed: {
  id: function(){ return this.$route.query.id; },
  hasId: function(){ return this.$route.query.id !== undefined; }
}

如何使用id计算hasId这样的伪代码?

computed: {
  id: function(){ return this.$route.query.id; },
  hasId: function(){ return id !== undefined; }
}

3 个答案:

答案 0 :(得分:12)

您需要使用正确的范围来访问vue计算属性。

因为您只使用itertools,它将在全局范围内搜索它而找不到它并将返回undefined。要获得vue计算属性,您需要执行:id,因此您的代码将如下所示:

this.id

在组件内部,computed: { id: function () { return this.$route.query.id; }, hasId: function () { return this.id !== undefined; } } 指的是我们的Vue instance。但是,您可以访问this中的$ route和其他类似函数,因为它们是在this定义的,请参阅以下vue-router中的代码:

Vue.prototype

答案 1 :(得分:0)

你的伪代码非常接近。只需将id更改为this.id

即可
computed: {
  id: function(){ return this.$route.query.id; },
  hasId: function(){ return this.id !== undefined; }
}

答案 2 :(得分:0)

我遇到了同样的问题,我只是使用观察程序解决了它。希望对您有所帮助:

 <div id="app">
  <label> true or false
   <input v-model="checkbox" type="checkbox">
  </label>   
</div>

<script>
new Vue({
    el: '#app',
    data: {
      checkbox: false,
    },

    computed: {

      checkboxComputed(){
        return this.checkbox;
      },

      lonelyComputed(){
        console.log('who bothers?');
        }
      },

    watch: {

      checkboxComputed(value){
        if(value){
          console.log('checkboxComputed is changed!')
          return this.lonelyComputed;
        }
      }
    }
});

</script>