REST适配器模型重新加载

时间:2013-10-16 17:17:20

标签: ember.js ember-data

我在重装我的余烬RESTful模型时遇到了一些困难,我不知道为什么。这是[概念上]我正在尝试做的事情...... http://jsbin.com/EfuBiNo/4/edit

该代码和我的代码之间的唯一区别是我没有使用FixtureAdapter,我正在使用RESTAdapter。不幸的是,重新加载我的RESTful模型会导致DS.RecordArray中的记录数量翻倍。因此,您可以看到控制台正在记录(在每次重新加载时)RecordArray中有两条记录。

当我使用我的RestAdapter运行时,计数为2 ... 4 ... 8 ... 16 ....等等。所以我不确定为什么它每次都会加倍,但如果有人知道为什么 - 或者更好的是,另一种方法来重新加载这些记录 - 我会非常感激。谢谢。

1 个答案:

答案 0 :(得分:4)

如果您需要在已加载记录后刷新记录集合,则可以执行以下操作:

App.ThingsRoute = Ember.Route.extend({
  model: function () {
    return this.store.find('thing');
  },

  actions: {
    refreshThings: function () {
      var controller = this.controller;
      this.store.find('thing').then(function (things) {
        controller.set('content', things);
      });
    }
  }
});

这将简单地再次获取所有thing s,并在promise解析时将记录数组设置为控制器上的内容。如果回来的物品已经在您的商店中编目(ids已经存在),那么您将无法获得大量重复记录;东西会得到更新。如果您之前未了解过新记录,那么您现在可以在ThingsController上获取这些记录。

如果您正在进行某种类型的查询,这也很有用:

this.store.find('thing', {color: 'red'})