我该如何在加载模板上设置最小超时功能
How would I go about setting a minimum timeout function on a loading template
我想要一个加载模板,无论数据是否准备好,都要有最短的加载时间。所以基本上运行加载模板1秒,即使加载了模板和订阅?
下面是我的路由器代码。
Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading',
waitOn: function() { return Meteor.subscribe('contacts'); }
});
Router.map(function() {
this.route('acorn', {path: '/'});
});
Router.onBeforeAction('loading');
您可以通过包装对Meteor.subscribe
的调用并为订阅实例的ready
和stop
方法编写传递来实现这一点。您的ready
版本只有在一秒钟后并且包装好的订阅准备就绪后才会返回true。
您的waitOn
方法可能看起来像:
waitOn: function() {
var sub = Meteor.subscribe("contacts");
var dep = new Tracker.Dependency();
var isSubReady = false;
var hasWaitTimePassed = false;
Meteor.setTimeout(function() {
hasWaitTimePassed = true;
dep.changed();
}, 1000);
Tracker.autorun(function() {
isSubReady = sub.ready();
dep.changed();
});
return {
ready: function() {
dep.depend();
return hasWaitTimePassed && isSubReady;
},
stop: function() {
sub.stop();
}
};
}
当然,如果你想在很多地方使用它,你会想把所有的逻辑打包成一个可重用的函数,这样你就可以做一些事情,比如:
waitOn: function() {
return subscribeWithDelay("contacts", 1000);
}
相关文章:
- 如何使用onDeviceReady设置AngularJS应用程序并初始化Cordova的功能
- 在悬停功能中设置超时
- 如何为同一功能设置 2 个时间间隔
- 在D3中设置缩放功能后,如何删除缩放功能
- Angular UI TinyMCE,如何设置打印功能
- 是否可以设置一个功能“;联系我们”;页面使用HTML/CSS
- 如何为停止/启动设置间隔功能仅设置一个键
- 如何在javascript中的幻灯片上设置自动重新加载功能
- 设置超时功能在 chrome 扩展程序弹出窗口.js问题
- 具有设置超时的刷新功能
- 设置计数器功能的值
- 划线设置页面功能不起作用
- 在慢速jQuery中设置功能显示/隐藏按钮
- JWPlayer 7错误,设置功能不起作用
- jQuery中启动/更改的单选按钮设置功能相同
- 这是骨干机设置功能的bug吗?
- 为什么不是'我在HTML代码中的设置功能正在工作
- 使用流星.设置功能
- 谷歌地图缩放没有设置功能
- 滑块设置功能