早上好,
我将不胜感激您能提供的任何帮助。我现在正沮丧地拔头发。我真的很想掌握 Ember 的窍门,但我一定错过了一些东西。
我想做的就是以下几点:
- 用户访问
/rooms
路由,appApp.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>