我有嵌套资源:
this.resource('foo', {path: '/foo/:foo_id'}, function() {
this.route('makesomethingwithfoo');
this.resource('bar', {path: 'bar/:bar_id'}, function() {
this.route('makesomethingwithbar');
当我在foo
时,我想使用模型#/foo/321421/bar/231421
中的一些属性。
我的BarIndexController
看起来像这样:
... = Ember.ObjectController.extend({
needs:'fooIndex',
//myBinding: 'controllers.fooIndex',
....});
如果我使用controllers.fooIndex.desiredProperty
,则在我的模板中,我可以访问模型foo
的属性。我想使用myBinding
以便更多地写几个字符(controllers.fooIndex
)。我认为我做的一切都是正确的,至少根据documentation看来是正确的。我收到这个错误:
Uncaught Error: assertion failed: Cannot delegate set('my', <(subclass of
Ember.ObjectController):ember238>) to the 'content' property of object proxy
<(subclass of Ember.ObjectController):ember249>: its 'content' is undefined
答案 0 :(得分:2)
拥有该模型的controller
为foo
。 fooIndex
路由是foo
路由的隐式嵌套路由,因此具有它自己的控制器。嵌套的FooIndexController
还需要根据需要在其父路由上查找模型。
在这种情况下,您的bar
路线需要在需求声明中使用foo
而不是fooIndex
。
needs:'foo',
fooBinding: 'controllers.foo'
fooBinding
是可选的。它将查找缩短为this.get('foo')
。您可能还想引用此answer来帮助澄清Ember中的嵌套资源。