Ember和RESTadapter:什么时候执行JSON调用?

时间:2013-08-03 13:19:26

标签: ember.js ember-data

使用Ember RESTadapter时,JSON调用何时执行?

示例1:

  • 如果我转到/index.html#/articles/,则会执行对资源文章的JSON调用。
  • 当我浏览到/index.html#/articles/2时,不会执行任何其他调用。
  • 我期待通过JSON调用单篇文章。

示例2:

  • 在应用程序加载后,我立即进入/index.html#/articles/1,执行2个JSON调用:一个到文章,一个到文章/ 1。
  • 但是,当循环遍历文章集合时(使用#each),只有第1条完成了数据。
  • 为什么要完成2次调用,为什么只加载了一篇文章的数据?

我的路线:

App.ArticlesRoute = Ember.Route.extend({
  model: function () {
    return App.Article.find();
  }
});

App.ArticlesShowRoute = Ember.Route.extend({
  model: function (params) {
    return App.Article.find(params.article_id);
  }
});

希望有人可以给我基本的解释或链接到其他帮助。

非常感谢 马克

1 个答案:

答案 0 :(得分:2)

  

如果我转到/index.html#/articles/,则会执行对资源文章的JSON调用。

这是正确的,因为适配器将获取所有文章。

  

当我浏览到/index.html#/articles/2时,不会执行其他调用。

这也是正确的,因为文章已经在商店中,并将从那里提供。

您的相应路由器地图应如下所示:

App.Router.map(function() {
  this.resource('articles', function() {
    this.route('show', {path: '/show/:article_id'});
  })
});

这将使您的ArticlesShowRoute过时,因为它是默认行为。如果您想要与默认行为不同的东西,则只需要明确定义ArticlesShowRoute

  

在应用程序加载后,我立即进入/index.html#/articles/1,执行2个JSON调用:一个到文章,一个到文章/ 1。

这可能是多余的......

  

然而,当循环遍历文章集合时(使用#each),只有第1条完成了数据。

此时,您应该能够遍历文章集并链接到要显示的相应文章:

{{#each article in model}}
  {{#linkTo 'articles.show' article}}Show article{{/linkTo}}
{{/each}}

希望它有所帮助。