notifyPropertyChange不通知绑定的属性链

时间:2014-04-22 23:09:47

标签: javascript ember.js

我有一个更新的对象,因为它更新了嵌套属性,因此ember无法注意到更改。我告诉它,实际上通过调用notifyPropertyChange进行了更改。但是,我的父视图未收到其绑定属性已更改的通知。

实施例: http://emberjs.jsbin.com/qesemahi/3/edit


我有一个糟糕的黑客来解决这个问题但是我希望有一个原因是ember没有通知整个绑定链。目前我有一个错误的克隆对象:http://emberjs.jsbin.com/qesemahi/4/edit

1 个答案:

答案 0 :(得分:0)

因为数据是组件内部的引用,所以它告诉组件中的引用它已被更改。老实说,尽管Ember内置了这个属性,但你似乎正在尝试手动处理属性更改。

App.IndexController = Ember.ObjectController.extend({
  display: function() {
    return this.get('data.underneath');
  }.property('data.underneath')
});


App.MyComponentComponent =  Ember.Component.extend({
  display: function() {
    return this.get('data.underneath');
  }.property('data.underneath'),
  actions: {
    insideClick: function(){
      this.set('data.underneath', 'foo bar');       
    }
  }
});

http://emberjs.jsbin.com/qesemahi/6/edit

使用计算别名可以更清晰..

App.IndexController = Ember.ObjectController.extend({
  display: Ember.computed.alias('data.underneath')
});


App.MyComponentComponent =  Ember.Component.extend({
  display: Ember.computed.alias('data.underneath'),
  actions: {
    insideClick: function(){
      this.set('data.underneath', 'foo bar');
    }
  }
});