ember-data如何重新加载/排序商店记录

时间:2013-03-22 14:07:25

标签: ember.js ember-data

有没有办法在ember-data中重新加载整个商店?或者对里面的物品进行分类?

它应该是这样的:

  • 用户点击“添加”按钮
  • 添加了新记录
  • 商店已提交
  • 用户被转移到列出项目的状态
  • 他的新条目正确无误

要做到这一点,我必须在model.didCreate中传输,这不应该是(它不是模型的角色!)或传输后刷新存储。

有人有过类似的问题吗?

我正在使用ember-data revision 12

修改

我用过:

Ember.run.later(this, function(){
    this.transitionToRoute('list');         
}, 500);

给商店一些时间。但是,新的条目总是在列表的底部。我仍然需要重新加载整个商店或以某种方式对其进行排序。

修改#2

所以我在这里做了很少的返工。在我的模板中,我使用:

{{#each arrangedContent}}

要使用已排序的数据,请使用以下路线:

App.AdsRoute = Ember.Route.extend({
    model: function(){
        return App.Ad.find();
    },
    sortProperties: ['id']
});

虽然不行。看起来Route不是ArrayController。如果我从AdsController延伸了额外的ArrayController,那么它就无法正常工作。

1 个答案:

答案 0 :(得分:1)

Ember ArrayControllers有一些用于对内容进行排序的选项:

http://emberjs.com/api/classes/Ember.ArrayController.html#property_sortAscending

您可以设置要排序的字段以及要使用的顺序。当您使用这些时,您将希望将视图绑定到arrangeContent而不仅仅是普通的旧内容。

在我的应用程序中,我通常会在记录持久化后返回列表状态:

var observer,   _this = this;

observer = function(target, path) {   
  if (target.get(path) === 'saved') {
    target.removeObserver(path, null, observer);
    return _this.get('target.router').transitionTo('apps.index');   
  } 
};

我不确定商店是否有重装机制(个别记录可以),但如果我找到答案,我可以更新此回复。