EmberJS notifyPropertyChange没有让它成为观察者?

gco*_*rci 4 ember.js

我有一个组件,里面有一个子组件列表(用父组件内的yield绘制):

parent-component
  for item in items
    child-component item=item childProperty=parentProperty
Run Code Online (Sandbox Code Playgroud)

在子组件内部,我有一个关于"childProperty"的观察者,它会在parentProperty更改时正确触发.问题是我想在财产没有实际改变的时候触发观察者.

要做到这一点,在我的父组件中,我有:

this.notifyPropertyChange('parentProperty')

出于某种原因,这不是对子组件的影响.这是一个JS bin显示:

http://emberjs.jsbin.com/caxedatogazo/1/edit

虽然我很乐意更多地讨论我的用例,但我更感兴趣的是JS bin是否应该工作,如果没有,为什么..

非常感谢您的帮助!

ViR*_*iRa 8

在控制器上调用notifyPropertyChange时,只有在控制器中注册的观察者才会收到有关属性更改的通知.

在您的情况下,观察者在组件控制器内,而不是调用notifyPropertyChange的父控制器.

有一种hacky方法可以确保组件控制器收到有关属性更改的通知.这可以通过将以下方法添加到Component来完成.

didInsertElement: function() {
  var controller = this.get('targetObject'); 
  controller.addObserver('foo', this, this.onDataChange);
},
Run Code Online (Sandbox Code Playgroud)

我们正在做的是,获取父控制器,为父控制器注册foo的观察者.

这是同样的emberjs小提琴:http://emberjs.jsbin.com/rajojufibesa/1/edit

希望这可以帮助!