首页 文章

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

提问于
浏览
2

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

它应该是这样的:

  • 用户点击"add"按钮
    添加了

  • 新记录

  • 商店被提交

  • 用户被传输到列出项目的状态

  • 他的新条目是正确的顺序

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

有谁有类似的问题?

我正在使用ember-data revision 12

EDIT

我用了:

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

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

EDIT#2

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

{{#each arrangedContent}}

要使用已排序的数据,我在以下路线中:

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

虽然不行 . 看起来Route不是ArrayController . 如果我从 ArrayController 进一步扩展 AdsController ,那么它也不起作用 .

1 回答

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

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

相关问题