13

バインディングを に追加しようとして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

クレジット: github でこれに回答したcaligo-mentisへ。

ObjectProxyインスタンスに同じ名前のプロパティが存在しない限り、すべての呼び出しをプロパティsetに委譲します。簡単な解決策は、バインディングを宣言する前に、目的の名前でプロパティを定義することです。contentObjectProxy

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 に答える