0

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

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

非常感谢马克

4

1 回答 1

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

希望能帮助到你。

于 2013-08-03T15:27:28.007 回答