我有一个组件,里面有一个子组件列表(用父组件内的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是否应该工作,如果没有,为什么..
非常感谢您的帮助!
在控制器上调用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
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3805 次 |
| 最近记录: |