2013-05-25 3 views
0

Я использую контроллер визуализации в моем приложении, и у меня возникли проблемы с пониманием логики вокруг создания контроллера.render helper и экземпляр Controller

Код в вопросе использует это (усеченную) шаблон (используя emblem.js):

.span4 
     render "learningNeeds" # models loaded in learningNeeds controller 
    .span8 
     render "notices" student.room.notices # student is defined on the top-level controller 
     render "observations" # models loaded in observations controller 

и setupController для шаблона маршрута:

App.ParentRoute = Ember.Route.extend 

    setupController: (controller, model) -> 
    console.log "ParentRoute setupController" 

    controller.set('student', model.get('students').objectAt(0)) 
    @set('controller.controllers.observations.showFilters', true) # this works 
    @set('controller.controllers.learning_needs.showFilters', true) # this works 
    @set('controller.controllers.notices.showAdd', true) # this doesn't work 
    App.currentUser = model 

я устанавливаю содержимое контроллеров learning_needs и observations в наблюдателях в пределах их соответствующих контроллеров, поэтому я не передаю ни одной модели вызову рендеринга в шаблоне.

С контроллером уведомлений я передаю в student.room.notices как второй параметр для вызова рендеринга.

Теперь проблема в том, что я вижу разные контроллеры notices, когда я визуализую шаблон в методе setupController Parent. То есть, у них разные икры. Контроллер в @set('controller.controllers.notices.showAdd', true) отличается от отображаемого шаблоном.

Если я удаляю модель student.room.notices из шаблона и просто использую уведомления «render», тогда используется тот же самый контроллер, и я могу установить свойство showAdd и показать его в шаблоне. Тогда проблема заключается в том, что она не содержит никаких моделей.

Соответствующие docs говорят, что помощник представления визуализации будет Get (or generate) the singleton instance of AuthorController, но это не похоже на меня.

Может ли кто-нибудь пролить свет на это поведение?

спасибо,

Martin

+0

какая версия ember.js вы используете? – intuitivepixel

+0

Я использую 1.0.0-rc.3 –

+0

Посмотрев на документы снова, я теперь вижу следующее: «Когда модель предоставляется, она получает уникальный экземпляр соответствующего контроллера». Похоже, поведение, которое я вижу, ожидается. Теперь я просто хотел бы выяснить, как получить ссылку на этот сгенерированный контроллер, чтобы я мог установить некоторые атрибуты на нем. –

ответ

0

Я думаю, вы должны использовать привязки недвижимости.

В NoticesController: showAdd: Ember.computed.alias('parentController.noticesShowAdd'

В setupController: controller.set('noticesShowAdd', true)

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

Обратите внимание, что если рендер вызывается внутри каждого, вам может потребоваться использовать target вместо parentController.

Смежные вопросы