おはようございます、
ご協力いただければ幸いです。私は現在、欲求不満で髪を引っ張っています。私は本当に Ember のコツをつかみたいのですが、何かが足りないに違いありません。
私がやりたいのは次のことだけです:
- ユーザーが
/rooms
ルートにアクセスし、アプリが電話をApp.Room.find()
かける - ユーザーが
/rooms/1
ルートにアクセスし、アプリが にselectedRoom
プロパティを設定しますRoomController
。 - テンプレートの
selectedRoom
プロパティを使用して、現在選択されている部屋を示します。rooms
- それぞれ
isSelected
のプロパティを使用して計算されたプロパティを作成し、その特定の部屋の表示を調整しますselectedRoom
RoomController
これは簡単なはずですが、うまくいきません。
ルート
App.RoomsRoute = Ember.Route.extend
setupController: ->
@controllerFor('application').set('currentRoute', 'rooms')
model: ->
App.Room.find()
App.RoomRoute = Ember.Route.extend
setupController: (model) ->
@controllerFor('application').set('currentRoute', 'rooms')
@controllerFor('rooms').set('selectedRoom', model)
model: ->
App.Room.find(params.room_id)
コントローラ
(これはデフォルト値を設定して、ユーザーが にいるときだけ/rooms
テンプレートに書き込む文字列があるようにする必要があります)
App.RoomsController = Ember.ArrayController.extend
selectedRoom: 'default'
App.RoomController = Ember.ObjectController.extend
needs: ['rooms']
isSelected: ( ->
selectedRoom = 'controllers.rooms.selectedRoom'
if selectedRoom.id == @get('id')
return true
else
return false
).property('controllers.rooms.selectedRoom')
テンプレート
部屋
<p>My selected room: {{ selectedRoom.room_id }}</p>
{{#each room in controller}}
{{#linkTo 'rooms.room' room}} Room {{ room.room_id }} {{/linkTo}}
{{/each}}
部屋
# This template is a contrived simplification of what I want to do... but essentially I just want to be able to access the `isSelected` property of the `RoomController`
<div {{ bindAttr class='isSelected' }}>
<p>Room {{ room.room_name }}</p>
</div>