0

おはようございます、

ご協力いただければ幸いです。私は現在、欲求不満で髪を引っ張っています。私は本当に Ember のコツをつかみたいのですが、何かが足りないに違いありません。

私がやりたいのは次のことだけです:

  1. ユーザーが/roomsルートにアクセスし、アプリが電話をApp.Room.find()かける
  2. ユーザーが/rooms/1ルートにアクセスし、アプリが にselectedRoomプロパティを設定しますRoomController
  3. テンプレートのselectedRoomプロパティを使用して、現在選択されている部屋を示します。rooms
  4. それぞれisSelectedのプロパティを使用して計算されたプロパティを作成し、その特定の部屋の表示を調整しますselectedRoomRoomController

これは簡単なはずですが、うまくいきません。

ルート

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>
4

1 に答える 1