2

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

它应该是这样的:

  • 用户点击“添加”按钮
  • 添加了新记录
  • 商店已提交
  • 用户被传送到列出项目的状态
  • 他的新条目以正确的顺序出现

为此,我必须在不应该的 model.didCreate 中传输(这不是模型的角色!),或者在传输后刷新存储。

有人有类似的问题吗?

我正在使用 ember-data 修订版 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。如果我AdsControllerArrayController它做额外的扩展也不起作用。

4

1 回答 1

1

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

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

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

在我的应用程序中,我通常会在记录保存后返回到列表状态:

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

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

于 2013-03-22T21:50:43.520 回答