2017-02-16 8 views
0

私はvue.js 2.0アプリケーションを初期化するときにwindow.Userオブジェクトを作成します。Vue.jsウィンドウプロパティを持つ奇妙なもの

これはすべてうまくいきます。その後、いくつかのコンポーネントでは、私は私の テンプレートでそれを使用しています:

v-if="this.User.role == 2" 

をので、いくつかのコンポーネントのこれが働いていると一部ではない-_-(Cannot read property 'role' of undefined)で。どのようにそれは可能ですか?これがうまくいかないコンポーネントでは、私はこれを試しました:

created() { 
    alert(window.User.role); 
} 

正しい結果が表示されます!しかし、テンプレートでは機能しません。ここで何が起こっているのだろうか。非常に非常にイライラすること。

bootstrap.js

Userはあなたがすべてでにアクセスしたいグローバル変数のように機能している場合は

Vue.component('corporations',   require('./components/corporation/Corporations.vue')); 
+0

全体のコードを投稿してください。 – Jackowski

+0

また、Userプロパティをdataプロパティに設定する必要があります。 '(){ this.User = window.User }' –

+0

@SrinivasDamamしかし、私はすべてのコンポーネントについてこれを行う必要がありますか? – Jamie

答えて

0

:私はすべてのコンポーネントを同じように登録

window.User = Laravel.user; 

コンポーネントを非アクティブにしたい場合は、それをルートVueのデータに追加し、他の場所でthis.$root.Userと参照してください。

mixinを使用して、を宣言して、mixinを使用するすべてのコンポーネントで使用できるようにすることもできます。このように:

var mixin = { 
    computed: { 
     User: function() { return window.User; } 
    } 
} 

ミックスインは、おそらくより良いルートです。

関連する問題