Требуется контроллер Emberjs с привязкой

У меня есть вложенные ресурсы:

    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). Я думаю, что все сделал правильно, по крайней мере, согласно документации . Я получаю эту ошибку:

     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 

person Pio    schedule 22.07.2013    source источник


Ответы (1)


controller с моделью foo. Маршрут fooIndex является неявным вложенным маршрутом маршрута foo и, следовательно, имеет собственный контроллер. Вложенный FooIndexController также должен искать модель на своих родительских маршрутах по мере необходимости.

В этом случае ваш маршрут bar должен использовать foo вместо fooIndex в объявлении потребностей.

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

fooBinding является необязательным. Это сокращает поиск до this.get('foo'). Вы также можете обратиться к этому ответу чтобы помочь прояснить вложенные ресурсы в Ember.

person Darshan Sawardekar    schedule 22.07.2013