我正处于学习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?
答案 0 :(得分:1)
如何防止这种冗余?
目前尚不清楚home / weather / index的模型钩子是否/如何/为什么会从服务器获取所有天气信息。如果这是期望的行为,那么完全同意当用户进入家庭/天气/站点时没有理由获取相同的数据。
如果您使用的是ember-data,则应该没有冗余:
App.Site.find()
获取所有天气数据时App.Site.find(weather_site)
从缓存返回网站并且没有向服务器发出新请求时App.Site.find(weather_site)
将调用服务器并仅获取该网站的数据。因此,除非有我遗漏的东西,否则没有可以防止的冗余。
换句话说,控制器如何相互通信?
似乎没必要,但是因为你问:控制器通过绑定相互通信。您通过控制器的needs
属性声明从一个控制器到另一个控制器的依赖关系,然后Ember自动注入该依赖关系。有关其工作原理的更多信息,请参阅余烬指南dependencies-between-controllers。
我应该在每个Route中使用setupController挂钩来实现这个目标还是有更好的方法?
在这种情况下,这不应该是必要的。
是否有任何好的资源可以帮助我了解Ember的数据流入和流出?
不清楚数据流的含义。最好的猜测是你从Luke Melia的gothamjs presentation
中学到了很多东西有没有什么好的资源可以帮助我更快地学习Ember?而不是深入研究来源?
阅读源代码总是一个不错的选择,但还有很多其他资源。我建议您查看embercasts和ember weekly