通过loadingRoute 功能,我们可以很好地在 Ember.js 应用程序中显示加载指示器。但是,如果您的加载时间通常很短怎么办?闪烁的加载指示器会使页面转换变得过于嘈杂。因此我认为最好延迟加载层的实际渲染,直到超过某个阈值。有无数种方法可以做到这一点,但最好的方法是什么?
问问题
1621 次
2 回答
2
我能想到的一种延迟模板的好方法LoadingRoute
是通过使用Ember.run.later
which来延迟模板的渲染,setTimeout
但通过在 runloop 中运行更安全。
App.LoadingRoute = Ember.Route.extend({
renderTemplate: function() {
Ember.run.later(this, function() {
this.render();
}, 1000); // put here the treshold you might find appropriate in ms
}
});
如果model
钩子在延迟超时之前解决了承诺,那么LoadingRoute
根本不会出现,这是您可能想要的行为。
希望能帮助到你。
于 2013-09-04T11:40:17.640 回答
2
我找到的解决方案是:
App.LoadingRoute = Em.Route.extend({
deactivate: function() {
var timer = this.get('timer');
if (timer)
Em.run.cancel(timer);
},
renderTemplate: function(controller, model) {
var self = this;
// Only render the loading indicator after 0.5s
var timer = Em.run.later(this, function() {
self.render('loading')
}, 500);
this.set('timer', timer);
}
});
如果在超过阈值之前解决了承诺,它将取消渲染。
于 2013-09-04T12:00:29.360 回答