【问题标题】:Update template after model update模型更新后更新模板
【发布时间】:2015-03-26 08:01:12
【问题描述】:

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

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

【问题讨论】:

  • 你应该使用observes。如果要更新到 ember 2,请不要使用控制器,因为控制器将被弃用。

标签: ember.js ember-data


【解决方案1】:

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

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

这是我的想法,希望对您有所帮助。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 2015-08-11
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多