web-dev-qa-db-fra.com

Est-il possible d'utiliser les propriétés calculées pour calculer d'autres propriétés dans Vue?

Si j'ai deux propriétés calculées comme ça,

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

comment utiliser id pour calculer hasId comme ce pseudo-code?

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

Vous devez utiliser l'étendue correcte pour accéder à une propriété vue calculée.

comme vous utilisez juste id, il le recherchera dans son étendue globale et ne le trouvera pas et retournera undefined. Pour obtenir la propriété vue calculée, vous devez faire: this.id, afin que votre code ressemble à ce qui suit:

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

Dans un composant, this fait référence à notre instance Vue . Cependant, vous pouvez accéder à $ route et à d'autres fonctions similaires à partir de this, comme ils sont définis à Vue.prototype, voir le code ci-dessous de vue-router :

 Object.defineProperty(Vue.prototype, '$route', {
    get: function get$1 () { return this.$root._route }
 })
9
Saurabh

votre pseudo-code était très proche. Il suffit de changer id en this.id

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