Ember-data如何重新加载/排序存储记录



是否有办法在ember-data中重新加载整个存储?或者对里面的物品进行分类?

应该是这样的:

  • 用户点击"添加"按钮
  • 新增记录
  • store已提交
  • 用户被传送到列出物品的状态
  • 他的新条目的顺序是正确的

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

有人有类似的问题吗?

我正在使用ember-data revision 12

编辑

我用了:

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

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

编辑# 2

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

{{#each arrangedContent}}

使用排序数据,在路由中我有:

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

但它不起作用。看起来Route不是ArrayController。如果我从ArrayController扩展额外的AdsController它也不起作用

Ember arraycontroller有几个排序内容的选项:

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

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

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

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');   
  } 
};

我不确定商店是否有重新加载机制(单个记录),但如果我找到答案,我可以更新此响应。

最新更新