我如何使每个子objectController观察其父arrayController中的更改

时间:2013-12-12 23:07:31

标签: ember.js ember-data

我有一个父resource和一个孩子routeaddressesaddress

儿童addressControllermodelControllerobserves其父addressesControllerarrayController)属性'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返回记录/模型,而不是我期待的addressControllerobjectController),但现在我有点意识到原因。它起作用,但对我而言,这感觉就像我正在通过后门。我是否需要每个address都在自己的插座中,以便所有人都能激活并同时观察?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

我不太明白你的问题。但是,我知道每个itemController都有一个指向其ArrayController的属性parentController。您可以与观察者一起使用它来了解父控制器何时更改:

ItemController = Ember.ObjectController.extend({

    parentControllerDidChange: function() {
        ...
    }.observes('parentController.saveRequested')

});

对你有帮助吗?

更新:请参阅下面有关将目标objectController分配给arrayController的itemController的注释。