如果用户第一次访问路径,则让他们等待模型加载是有意义的。但是,一旦该路由已经加载了其模型,如果用户再次访问,我们希望立即使用加载的(陈旧)模型渲染模板,并在必要时在后台静默刷新它们。这就是我们想出的:
App.TeamsRoute = Ember.Route.extend({
setupController: function(controller, model) {
this._super(controller, model);
var teams = this.store.find('team', {is_archived: false});
if(!controller.get('content.length')) {
// loadable mixin sets isLoading=true until model resolves
// useful for rendering template immediately,
// and showing a loading spinner where models will appear
controller.load(teams);
} else {
teams.then(function() {
// only update if changed
if(controller.get('content') !== teams) {
controller.set('content', teams);
}
});
}
}
这似乎是一种非常常见的场景,尤其适用于具有大型模型的arrayControllers。所以我的问题是:
这个概念叫做什么?ember.js是否有任何现有的mixins / implementation?