我有一个父resource
和一个孩子route
:addresses
和address
儿童addressController
(modelController
)observes
其父addressesController
(arrayController
)属性'saveRequested';然后,当属性更改为true时,它会运行this.model.save()
的内部操作。
在addresses
模板addresses
link-to
address
中,只有一个address
处于有效状态(outlet
位于addresses
在任何时候。当用户触发父saveRequested=true;
时,只有活动的address
会观察并执行所需的操作。虽然我没有想到这种行为,但确实只有一条子路由一次处于活动状态。
我的问题是,如何管理这种情况,以便加载到内存并存储在父address
addresses
中的每个子arrayController
都响应父保存请求?原因:用户对每个地址进行了他想要的所有编辑,然后应该能够点击保存在地址中,然后保存/保存对每个地址所做的所有更改。
到目前为止,我唯一的解决方案是对forEach
address
中存储的每个content
进行迭代(addressController
)并直接调用返回的addressModel.save()
。 forEach
返回记录/模型,而不是我期待的addressController
(objectController
),但现在我有点意识到原因。它起作用,但对我而言,这感觉就像我正在通过后门。我是否需要每个address
都在自己的插座中,以便所有人都能激活并同时观察?
感谢您的帮助。
答案 0 :(得分:1)
我不太明白你的问题。但是,我知道每个itemController
都有一个指向其ArrayController的属性parentController
。您可以与观察者一起使用它来了解父控制器何时更改:
ItemController = Ember.ObjectController.extend({
parentControllerDidChange: function() {
...
}.observes('parentController.saveRequested')
});
对你有帮助吗?
更新:请参阅下面有关将目标objectController分配给arrayController的itemController的注释。