Контроллер для неправильной настройки контроллера в ember.js

У меня есть следующий маршрутизатор:

Whistlr.OrganizationsNewRoute = Ember.Route.extend
  model: ->
    Whistlr.Organization.createRecord()
  setupController: (controller, model) ->
    @controllerFor('organization').set('content', model)

Это вызывается в новой организационной форме, которая имеет несколько входных данных с привязками, такими как:

Em.TextField valueBinding="name"

Когда я ввожу данные в любой из этих входов, я получаю это сообщение об ошибке:

Cannot delegate set('name', C) to the 'content' property of object proxy <Whistlr.OrganizationsNewController:ember519>: its 'content' is undefined.

Который говорит мне, что контроллер не был должным образом установлен маршрутизатором. Почему это происходит?

2 ответа

Решение

Причина в том, что вы устанавливаете модель на Whistlr.OrganizationsControllerгде как то controller для Whistlr.OrganizationsNewRoute будет Whistlr.OrganizationsNewController чей контент не установлен, так как вы переопределяете setupController из Whistlr.OrganizationsNewRoute,

Если вы хотите Whistlr.OrganizationsNewRoute иметь Whistlr.OrganizationsController в качестве контроллера по умолчанию, вы можете сделать это

Whistlr.OrganizationsNewRoute = Ember.Route.extend({
        controllerName: 'organization'
});

который установит Whistlr.OrganizationsController в качестве контроллера по умолчанию для вашего Whistlr.OrganizationsControllerс помощью которого вам может не потребоваться переопределить setupController также. Но это доступно только в мастер.

Если вы используете сборку RC <= 1.0.0.RC6, вы должны сделать это, упомянув контроллер в renderTemplate из Whistlr.OrganizationsNewRoute,

    Whistlr.OrganizationsNewRoute = Ember.Route.extend({
           setupController: function(controller,model) {
                 this.controllerFor('organization').set('content', model)
           },
           renderTemplate: function(){
                  this.render({ controller: 'organization' });
           }
    });

Значение, возвращаемое из ловушки модели, будет присвоено свойству модели. В setupController модель будет неопределенной, если вы ничего не возвращаете.

модель: -> вернуть Whistlr.Organization.createRecord()

Другие вопросы по тегам