13

当您尝试向 an 添加绑定时,ObjectController它不起作用。

App.FailController = Em.ObjectController.extend({
    content: null,
    myBinding: "App.router.myController" // <-- fails
});

错误:

Uncaught Error: assertion failed: Cannot delegate set('my', ) to the 'content' property of object proxy <.FailController:ember154>: its 'content' is undefined.

它尝试将其添加到content属性中。

jsFiddle:演示

4

2 回答 2

33

致谢:感谢caligo-mentis,他在 github 上回答了这个问题。

ObjectProxy委托对该属性的任何调用,set除非实例content上存在同名的属性。ObjectProxy简单的解决方案是在声明绑定之前定义一个具有所需名称的属性。

App.FailController = Em.ObjectController.extend({
    my: null,
    myBinding: "App.router.myController" // <-- works
});

jsFiddle:演示

于 2012-09-19T20:33:44.083 回答
4

替代解决方案:

App.FailController = Em.ObjectController.extend({
    content: Ember.Object.create(),
    my: function() {
      return App.router.myController;
    }.property('App.router.myController')
});

或更好:

App.FailController = Em.ObjectController.extend({
    content: Ember.Object.create(),
    my: Ember.computed.alias('App.router.myController')
});
于 2012-10-16T14:00:57.237 回答