1
App.MainController = Em.ObjectController.extend({
    needs: ['my']
});

App.MyController = Em.ObjectController.extend({
    needs: ['main'],
    mainControllerBinding: 'controllers.main'
});

这当然不能按预期工作。但是这个:

App.MyController = Em.ObjectController.extend({
    needs: ['main'],
    mainController: null,
    mainControllerBinding: 'controllers.main'
});

那就是设置null,确实如此。问题是当您尝试设置更多绑定时,您看到的是在实际绑定之前的一堆冗余空值。

有没有一种已知的方法可以避免它并且更加干燥?


编辑#1

批准的解决方案帮助我用一块石头杀死了两只鸟。事实证明,以前这是不可能的- 我一直收到错误:

Error while loading route: RangeError
Uncaught RangeError: Maximum call stack size exceeded 

请注意,可能无法运行此示例,因为它会使 Chrome 崩溃。

但新方法使之成为可能毫不费力!http://jsfiddle.net/gqSMU/11/

4

1 回答 1

3

尝试这个:

App.MyController = Em.ObjectController.extend({
  needs: ['main'],
  mainController: Em.computed.alias('controllers.main')
});
于 2013-08-30T22:15:15.950 回答