2017-02-16 23 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

window.User = Laravel.user; 

註冊我的所有組件以同樣的方式:

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

請發送完整的代碼。 – Jackowski

+0

您還應該將用戶設置爲數據屬性。 'created(){ this.User = window.User }' –

+0

@SrinivasDamam但是我必須爲每個組件做到這一點? – Jamie

回答

0

如果User被表現得像一個全局變量,你在所有要訪問組件,並且您希望它是被動的,您可以將其添加到根Vue的數據,然後在其他地方將其稱爲this.$root.User

您也可以使用mixin聲明一個computed,使其在所有使用mixin的組件上都可用。像這樣:

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

mixin可能是一條更好的路線。