Reputation: 18557
When you try adding a binding to an ObjectController
it doesn't work.
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.
It tries adding it to the content
property.
jsFiddle: demo
Upvotes: 13
Views: 6335
Reputation: 18557
credits: to caligo-mentis who answered this over at github.
ObjectProxy
delegates any call to set
to the content
property unless a property with the same name exists on the ObjectProxy
instance. The simple solution is to define a property with the desired name prior to declaring the binding.
App.FailController = Em.ObjectController.extend({
my: null,
myBinding: "App.router.myController" // <-- works
});
jsFiddle: demo
Upvotes: 33
Reputation: 10087
Alternative solution:
App.FailController = Em.ObjectController.extend({
content: Ember.Object.create(),
my: function() {
return App.router.myController;
}.property('App.router.myController')
});
or better:
App.FailController = Em.ObjectController.extend({
content: Ember.Object.create(),
my: Ember.computed.alias('App.router.myController')
});
Upvotes: 4