早上好,
感谢您提供的任何帮助。我目前正在沮丧地拔头发。我真的想要了解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>
答案 0 :(得分:1)
当我在旧版本的Ember(v1.0.0-pre.4)上运行你的代码(填充了一些空白)时,它似乎按照您的需要工作,当您点击它时所选房间会突出显示
当我尝试使用最新版本(1.0.0-rc.4)时,它无法正常工作,所以这告诉我这可能是Ember的一个突破性变化。
根据this answer,model
和setupController
挂钩会在不同情况下被调用。
为了让您的代码有效,我必须在controller.set("model", model);
中添加setupController
:
App.RoomsRoute = Ember.Route.extend({
setupController: function(controller, model) {
this.controllerFor('application').set('currentRoute', 'rooms');
// Load the model property here because the model hook isn't
// called in this case
controller.set("model", model);
},
model: function() {
return App.Room.find();
}
});`
不是Ember专家,也不确定这是否与您遇到的问题相同,但这对我有用。我尝试的完整工作代码在这里:https://gist.github.com/jasonschock/5667656#file-app-js-L15