2

我有嵌套资源:

    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我可以访问 model 的属性foo。我想使用myBinding以节省多写几个字符(controllers.fooIndex)。我认为我做的一切都是正确的,至少根据文档看起来是正确的。我收到此错误:

     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 
4

1 回答 1

2

controller有型号的是foo。该fooIndex路由是路由的隐式嵌套路由foo,因此具有它自己的控制器。嵌套FooIndexController还需要根据需要在其父路由上查找模型。

在这种情况下,您的bar路线需要使用foo而不是fooIndex在需求声明中。

needs:'foo',
fooBinding: 'controllers.foo'

fooBinding是可选的。它将查找缩短为this.get('foo'). 您可能还想参考这个答案来帮助澄清 Ember 中的嵌套资源。

于 2013-07-22T03:04:37.557 回答