Vue JS - 访问组件内的根计算属性

时间:2016-07-11 10:18:27

标签: vue.js

我正在尝试从根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 "$";
      }
    }
  }
});

1 个答案:

答案 0 :(得分:5)

对于具有相同问题的任何人,您只需在属性前定义$ root。所以在我的例子中而不是这个......

<h3 class="plan-cost">{{ currency }}</h3>

......需要这样......

<h3 class="plan-cost">{{ $root.currency }}</h3>

VueJS文档确实在组件的Parent Chain部分讨论了这个问题。