Ken*_*AUD 55 vue.js vue-component vuejs2
我有一个javascript变量,我想在实例化时全局传递给Vue组件,因此每个注册的组件都将它作为属性或者可以全局访问.
注意::我需要将vuejs的这个全局变量设置为READ ONLY属性
ase*_*hle 73
您可以使用Global Mixin来影响每个Vue实例.您可以向此mixin添加数据,使值/值可用于所有vue组件.
要使该值为只读,您可以使用此stackoveflow答案中描述的方法.
这是一个例子:
// This is a global mixin, it is applied to every vue instance
Vue.mixin({
data: function() {
return {
get globalReadOnlyProperty() {
return "Can't change me!";
}
}
}
})
Vue.component('child', {
template: "<div>In Child: {{globalReadOnlyProperty}}</div>"
});
new Vue({
el: '#app',
created: function() {
this.globalReadOnlyProperty = "This won't change it";
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.js"></script>
<div id="app">
In Root: {{globalReadOnlyProperty}}
<child></child>
</div>Run Code Online (Sandbox Code Playgroud)
Que*_*n C 10
在带有 createApp() 的 VueJS 3 中,您可以使用 app.config.globalProperties
像这样:
const app = createApp(App);
app.config.globalProperties.foo = 'bar';
app.use(store).use(router).mount('#app');
Run Code Online (Sandbox Code Playgroud)
并像这样调用你的变量:
app.component('child-component', {
mounted() {
console.log(this.foo) // 'bar'
}
})
Run Code Online (Sandbox Code Playgroud)
文档:https : //v3.vuejs.org/api/application-config.html#warnhandler
如果您的数据是响应式的,您可能需要使用 VueX。
你可以使用 mixin 并像这样改变 var 。
// This is a global mixin, it is applied to every vue instance
Vue.mixin({
data: function() {
return {
globalVar:'global'
}
}
})
Vue.component('child', {
template: "<div>In Child: {{globalVar}}</div>"
});
new Vue({
el: '#app',
created: function() {
this.globalVar = "It's will change global var";
}
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.3/vue.js"></script>
<div id="app">
In Root: {{globalVar}}
<child></child>
</div>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
84254 次 |
| 最近记录: |