Ember数据什么是分片数据的正确方法

时间:2014-11-30 01:54:41

标签: javascript ember.js ember-data

我试图使用ember-data,我有一个如下所示的数据模型:

我有多本书,每本书都有页面。 通常,用户只会阅读几本书,而且可能会有很多书。获得一本书的所有页面实际上都是在后端超软。

所以这就是我想做的事情: / books显示所有书籍标题,摘要...(不加载他们的页面)。 / books / {id} / pages返回最高页面(但加载整本书)。 / books / {id} / pages / {id}返回一个页面和一些信息(无需加载或加载整本书,如果它还不存在的话)。

所以我写了这些路线:

App.PagesIndexRoute = Ember.Route.extend({
  model: function (params) {
    var books = this.modelFor("books");
    // Find all the rules for this book
    return this.store.find('rules', {"books": books.id});
  }
});

App.PagesGetRoute = Ember.Route.extend({
  model: function (params) {
    var books = this.modelFor("books");
    this.store.find('rules', {"books": books.id});
    return this.store.find('rules', params.rules_id);
  }
});

这非常有效。只要用户留在一本书中。当用户决定更改书籍时。另一本书的数据尚未加载,因此它是空的。

我真的不能做一个getAll('规则')因为这个查询太大了。 我不确定ember-data实际上应该能够处理这些东西。如果情况并非如此,我将不幸地放弃它,这是一种耻辱,因为我希望能节省时间。

编辑这里是我的路线,因为它可能实际上是一个错误:

App.Router.map(function () {
  // Add your routes here
  this.resource('news', function() {
    this.route('get', { "path": "/:news_id"});
  });

  this.resource('books', function() {
    this.resource('books', {"path": ":books_id"}, function() {
      this.resource('pages', function() {
        this.route('get', { "path": ":pages_id"});
      });
    });
  });
});

这是一个小提琴:http://jsfiddle.net/qzk655gk/6/

1 个答案:

答案 0 :(得分:0)

升级到更新版本后。这停止了​​:

-    "ember": "1.6.1",
+    "ember": "1.8.1",
     "handlebars": "1.3.0",
-    "ember-data": "1.0.0-beta.8"
+    "ember-data": "1.0.0-beta.12"