1

我正处于学习 Ember 的痛苦缓慢的过程中,发现指南和文档在涉及非平凡示例时受到严重限制。

现在我的问题。

给定以下路由器定义:

App.Router.map(function () {
this.resource('home', function() {
  this.resource('weather', function() {
    this.route('site', {path: '/:weather_site'});
  });
});

当用户进入 home.weather.index 路由时,模型钩子执行并从服务器获取所有天气信息。当用户随后进入 home.weather.some_site 时,新路线的模型挂钩将从服务器带来该特定站点的天气数据。如何防止这种冗余?换句话说,控制器如何相互传递数据?我应该在每个 Route 中使用 setupController 挂钩来实现这一点还是有更好的方法?

有什么好的资源可以帮助我理解 Ember 的数据流进出吗?有什么好的资源可以帮助我比挖掘源代码更快地学习 Ember?

4

1 回答 1

1

如何防止这种冗余?

目前尚不清楚 home/weather/index 的模型挂钩是否/如何/为什么会从服务器获取所有天气信息。如果这是所需的行为,那么完全同意当用户进入家庭/天气/站点时没有理由获取相同的数据。

如果您使用的是 ember-data,则不应有冗余,因为:

  • 当用户访问家庭/天气/索引时App.Site.find()获取所有天气数据
  • 当他们访问家庭/天气/站点App.Site.find(weather_site)时,从缓存中返回站点并且不会向服务器发出新请求
  • 如果用户直接访问家庭/天气/站点(或刷新浏览器),App.Site.find(weather_site)则将调用服务器并仅获取该站点的数据。

因此,除非我缺少某些东西,否则无需防止冗余。

换句话说,控制器如何相互传递数据?

似乎没有必要,但既然你问:控制器通过绑定相互通信。您通过控制器的属性声明从一个控制器到另一个控制器的needs依赖关系,然后 Ember 自动注入该依赖关系。有关其工作原理的更多信息,请参阅 ember 指南dependencies-between-controllers

我应该在每个 Route 中使用 setupController 挂钩来实现这一点还是有更好的方法?

在这种情况下,这不应该是必要的。

有什么好的资源可以帮助我理解 Ember 的数据流进出吗?

不清楚你所说的数据流是什么意思。最好的猜测是你会从 Luke Melia 的gothamjs 演示中学到很多东西

有什么好的资源可以帮助我比挖掘源代码更快地学习 Ember?

阅读源代码始终是一个不错的选择,但还有许多其他资源。我建议每周查看embercastsember

于 2013-08-18T04:30:36.740 回答