模型更新后更新模板

时间:2015-01-27 16:15:28

标签: ember.js ember-data

我正在尝试创建一个曲目列表页面。在页面上,我们有他们的名字,艺术家等歌曲。当用户投票选出一首歌曲(上/下)时,应更新投票数,并重新过滤该列表,以便投票最多的歌曲是列表中的第一首。

到目前为止,这是由服务器完成的。但我们正在尝试避免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世界的新手,并且不知道这里出了什么问题。

1 个答案:

答案 0 :(得分:0)

我认为问题在于你获取曲目的方式。你不应该直接从商店访问它们。

尝试将TracklistingController重命名为TrackController。这样ember就可以将它直接绑定到你的模型,然后在Track模板中使用'模型'用于遍历所有轨道的变量(由ember自动创建)。

这是我的头脑,我希望它有所帮助。

编辑: 查看此链接,它会解释如何正确执行此操作:http://emberjs.com/guides/controllers/representing-multiple-models-with-arraycontroller/