Ember在加载时观察异步belongsTo关系属性

时间:2015-01-14 19:44:32

标签: javascript ember.js ember-data

我正在尝试观察异步的belongsTo关系属性。我只想观察来自api的变化。所以我正在考虑单向绑定并观察它。我不确定该怎么做。

此jsbin http://jsbin.com/yaxame/1将绑定显示为正常的双向绑定。每次都有人' ' isHappy'它提醒你“有人很开心”。但我希望它只在数据来自api而不是用户输入时发出警报。

双向绑定:

isHappyDidChange: function() {
  if (this.get('model.spouse.isHappy')) {
    alert('Someone is happy');
  }
}.observes('model.spouse.isHappy')

我意识到这个jsbin http://jsbin.com/yaxame/2是错误的,因为你需要触发绑定模板。那么正确的方法是什么?

单向错误绑定:

isHappyOneWay:  Ember.Binding.oneWay("model.spouse.isHappy"),

isHappyDidChange: function() {
  if (this.get('model.spouse.isHappy')) {
    alert('Someone is happy');
  }
}.observes('isHappyOneWay')

更新了想法:

如果我能像这样观察isLoaded:

isHappyDidChange: function() {
  if (this.get('model.spouse.isHappy')) {
    alert('Someone is happy');
  }
}.observes('model.spouse.isLoaded')

然后那会很棒,它可能会解决我的问题。但isLoaded实际上并不意味着模型被加载...... http://jsbin.com/yaxame/3

谢谢!

1 个答案:

答案 0 :(得分:0)

观察isFulfilled可以解决问题:

isHappyDidChange: function() {
  if (this.get('spouse.isHappy')) {
    alert('Someone is happy');
  }
}.observes('spouse.isFulfilled')

如jsbin http://jsbin.com/yaxame/4/

中所示

<强>更新

仍然无法更新记录。 http://jsbin.com/yaxame/5/尝试观察&#39;做了更新&#39;同样但这不起作用。 http://jsbin.com/yaxame/6/但是我现在至少在完成之后才开火了。