Vue.js与窗口属性奇怪的事情

时间:2017-02-16 17:53:07

标签: javascript vue.js

当我初始化我的vue.js 2.0 app时,我会创建window.User个对象。

这一切都很顺利。然后在一些组件中,我正在使用它 模板:

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'));

1 个答案:

答案 0 :(得分:2)

如果User的行为类似于您希望在所有组件中访问的全局变量,并且您希望它是被动的,则可以将其添加到根Vue的数据中,然后在其他任何地方引用它{{{ 1}}。

您还可以使用mixin声明this.$root.User,使其在所有使用mixin的组件上都可用。像这样:

computed

mixin可能是更好的选择。