2016-12-15 2 views
6

私はこのような2つの計算の性質を持っている場合は、計算されたプロパティを使用して、Vueの別のプロパティを計算することはできますか?

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

は、どのように私は、この擬似コードのようなhasIdを計算するためにidを使用することができますか?

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

'id'戻る - ')> '(this.idリターンでお願い問題 – aaaaaa

+0

を修正あなたはそれを返信として投稿して受け入れられるのはなぜですか? –

+0

あなたはコメントをdownvoteすることはできませんし、OPの質問には明確化によってしか分かっていないことが多いので、 – aaaaaa

答えて

2

を変更。

あなたが使用しているのはidで、グローバルスコープで検索し、見つからず、未定義になります。 VUE計算されたプロパティを取得するために、あなたがする必要があります:this.idので、あなたのコードは次のようになります。

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

をコンポーネントの内部では、thisは、私たちのVue instanceを指します。彼らはVue.prototypeで定義されているようしかし、あなたはvue-routerからコード下記参照、thisから$ルートや他の同様の機能にアクセスすることができます。

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

私はそれを取得しません。あなたが時間があるなら@aaaaaaによって他の返信への私のコメントを見てください。私の理解によれば、 'this.id()'は、現在作成されているコンポーネントではなく、ベースのVueオブジェクトを参照する必要があります。私は何かが欠けていると確信していますが、何ですか? –

+0

@KonradVilterstenが答えを更新しました。あなたの質問に答えたら教えてください。 – Saurabh

+0

'this'はjavascriptで非常に誤った構文です。 Vueは、「計算された」オブジェクトのような混乱しているインスタンスでは、「この」と混乱してはいけません。 – aaaaaa

1

擬似コードが非常に近いです。ちょうどあなたがVUE計算されたプロパティにアクセスするための正しいスコープを使用する必要がid

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

私はそれがなぜ機能しているのか分かりません。私が読んだことすべてによると、この文脈では、 'this'はコンポーネントインスタンス自体ではなくVueオブジェクトを参照しています(例えば' this。$ route'が動作し、それが新しいJS構文を使用できない理由 ' prop:()=> {...} ')。私は 'this.id()'がルートVueオブジェクトのいくつかのプロパティ 'id'を参照していると思います。どうしたらいいですか? –

+0

私はvuejsと話すことはできませんが、 'これは所有するプロパティを持つオブジェクトを指します。 hasIdの場合、 'this'は' computed'を指します。また、新しいjs構文を使用する場合は、 'hasId(){return this.id()!== undefined; } 'は行く方法です。 – aaaaaa

関連する問題