当ember服务变量发生变化时,组件观察器如何变化

时间:2017-06-19 12:51:30

标签: ember.js service ember-data ember-cli ember-components

我有一个变量"玩家"这是一个数组。每当服务变量发生变化时,我想在另一个组件中计算变量。我使用了 observer 计算属性,但组件观察者没有被调用或更改。

**roster.js:**
export default Ember.Service.extend({
    players:{},
});


**component.js:**
export default Ember.Component.extend({
  positions:config.APP.POSITIONS.cricket,
  roster: Ember.inject.service(),
  newPlayers: Ember.computed('roster.players',function(){
    console.log("Am the computed value"); 
    //This return statment is just an example that i want to change the result object
    return "am in "+this.get('roster').players.length
  }),
});


**component.hbs**
<div class="listview">
  <div class="player-list-panel">
   Length: {{roster.players.length}}
   New Players: {{newPlayers}}
  </div>
</div> 
{{yield}}
当页面加载组件时第一次

,然后调用 newPlayers 。当服务中的玩家对象得到更新时, newPlayers 不会被计算

请帮助我了解如何获得它或正确的方法。

1 个答案:

答案 0 :(得分:1)

在组件内部,要访问服务,您需要注入它。假设服务文件名为my-service.js

myService: Ember.inject.service(),

newPlayers - 是一个计算属性,你需要在组件js / hbs的代码中的某个地方使用它(即获取它),否则这将被计算,否则它将不会。