アプリでレンダー コントローラーを広範囲に使用していますが、コントローラーの作成に関するロジックを理解するのに問題があります。
問題のコードは、この (カットダウンされた) テンプレートを使用します (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 をレンダー呼び出しの 2 番目のパラメーターとして渡します。
問題は、 setupController メソッドnotices
でテンプレートをレンダリングすると、別のコントローラーが表示されることです。Parent
つまり、それらは異なる ember ID を持っています。のコントローラー@set('controller.controllers.notices.showAdd', true)
は、テンプレートによってレンダリングされるものとは異なります。
テンプレートからモデルを削除してstudent.room.notices
「render "notices"」を使用すると、同じコントローラーが使用され、showAdd プロパティを設定してテンプレートに表示できます。問題は、モデルが含まれていないことです。
関連するドキュメントは、レンダー ビュー ヘルパーがそうすると言いますがGet (or generate) the singleton instance of AuthorController
、これは私には当てはまらないようです。
誰でもこの動作に光を当てることができますか?
ありがとう、
マーティン