我正在尝试从根Vue实例访问计算属性并在组件内访问它。在组件模板外部输出的<p class="currency">
元素正确输出{{currency}},但在尝试访问组件内的{{currency}}时,不会输出任何内容。我已经尝试将货币设置为道具,但这似乎没有任何区别。我确信必须有一种方法可以从组件中访问根Vue实例,例如{{vm.currency}},但我再次试过这个没有用。
这是HTML。
<div id="app">
<ul class="plans">
<plan-component : name="Basic" ></plan-component>
<plan-component : name="Rec" ></plan-component>
<plan-component : name="Team" ></plan-component>
<plan-component : name="Club" ></plan-component>
</ul>
<template id="plan-component">
<li>
<h2 class="plan-name">{{ name }}</h2>
<h3 class="plan-cost">{{ currency }}</h3>
</li>
</template>
<p class="currency">{{ currency }}</p>
</div><!-- end #app -->
这是JS。变量countryCode在我的应用程序的其他位置定义,但就像我说{{currency}}在组件外部工作所以这不是问题。
Vue.component('plan-component', {
template: '#plan-component',
props: {
name: String,
}
});
var vm = new Vue({
el: '#app',
computed: {
currency: function() {
if(countryCode === 'GB') {
return "£";
} else {
return "$";
}
}
}
});
答案 0 :(得分:5)
对于具有相同问题的任何人,您只需在属性前定义$ root。所以在我的例子中而不是这个......
<h3 class="plan-cost">{{ currency }}</h3>
......需要这样......
<h3 class="plan-cost">{{ $root.currency }}</h3>
VueJS文档确实在组件的Parent Chain部分讨论了这个问题。