Связывание с 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: демо
Ответы
Ответ 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')
});