我正在尝试创建一个曲目列表页面。在页面上,我们有他们的名字,艺术家等歌曲。当用户投票选出一首歌曲(上/下)时,应更新投票数,并重新过滤该列表,以便投票最多的歌曲是列表中的第一首。
到目前为止,这是由服务器完成的。但我们正在尝试避免get
请求,以便只需要进行一次post
投票。
获得更新的投票数量非常简单:
route.store.find('Track', track_id).then(function (track) {
track.set('votes', track.get('votes') + 1);
});
但是在搜索Google和Ember文档一段时间之后,似乎没有太多关于结果排序的内容,这样当我更新模型上的属性时,订单也会在模板上更新。
型号:
App.Track = DS.Model.extend({
name: DS.attr('string'),
artist: DS.attr('string'),
picture: DS.attr('string'),
votes: DS.attr('number'),
voted: DS.attr('boolean'),
vote_type: DS.attr('boolean')
});
控制器:
App.TracklistingController = Ember.ArrayController.extend({
sortProperties: ['votes'],
sortAscending: false
});
我使用以下内容获取当前列表中的曲目:
return route.store.all('Track');
这是我们在Ember开展的第一个项目,所以我只是Ember世界的新手,并且不知道这里出了什么问题。
答案 0 :(得分:0)
我认为问题在于你获取曲目的方式。你不应该直接从商店访问它们。
尝试将TracklistingController重命名为TrackController。这样ember就可以将它直接绑定到你的模型,然后在Track模板中使用'模型'用于遍历所有轨道的变量(由ember自动创建)。
这是我的头脑,我希望它有所帮助。
编辑: 查看此链接,它会解释如何正确执行此操作:http://emberjs.com/guides/controllers/representing-multiple-models-with-arraycontroller/