0

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

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

当我用我的 RestAdapter 运行它时,计数变为 2...4...8...16....等。所以我不确定为什么每次都会翻倍,但如果有人对原因有任何见解——或者更好的是,另一种重新加载这些记录的方法——我将非常感激。谢谢。

4

1 回答 1

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

这将简单地再次获取所有things 并在承诺解决时将记录数组设置为控制器上的内容。如果返回的商品已经在您的商店中进行了编目(id 已经存在),那么您将不会有大量重复的记录;东西只会得到更新。如果有您以前不知道的新记录,那么您现在会在您的ThingsController.

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

this.store.find('thing', {color: 'red'})
于 2013-10-16T19:28:20.930 回答