我试图从根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 -->
Run Code Online (Sandbox Code Playgroud)
这是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 "$";
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
对于存在相同问题的任何人,您只需要在属性之前定义$ root。因此,在我的示例中,代替此...
<h3 class="plan-cost">{{ currency }}</h3>
Run Code Online (Sandbox Code Playgroud)
...一定是这个...
<h3 class="plan-cost">{{ $root.currency }}</h3>
Run Code Online (Sandbox Code Playgroud)
VueJS文档确实在“ 组件” 的“ 父链”部分讨论了这一点。
| 归档时间: |
|
| 查看次数: |
3280 次 |
| 最近记录: |