Emberjs контролер се нуждае от Binding

Имам вложени ресурси:

    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