Подтвердить что ты не робот

Связывание с ObjectController - Ember.js

При попытке добавить привязку к 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: демо

4b9b3361

Ответ 1

кредиты: caligo-mentis, которые ответил на в github.

ObjectProxy делегирует любой вызов set в свойство content, если в экземпляре ObjectProxy не существует свойство с тем же именем. Простое решение - определить свойство с желаемым именем до объявления привязки.

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

jsFiddle: демонстрация

Ответ 2

Альтернативное решение:

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')
});