我正在使用 Meteor + AngularJS 框架。
我想根据离线集合中存储的数据(使用ground:db)来控制路由,但不能保证离线数据在路由之前准备好。
如果集合不离线,似乎有一些方法像“waitOn”或“subscriptionReady”值得研究,但离线集合不需要订阅或发布,我如何确保它们在路由之前或应用程序启动之前准备好?
关键来源片段:
1.route.js
import { LastLogin } from '../lib/collections';
angular.module('app')
.config(function ($stateProvider, $urlRouterProvider) {
console.log(LastLogin.find().count());
if(LastLogin.find().count() > 0){
$urlRouterProvider.otherwise('main/homepage');
}else{
$urlRouterProvider.otherwise('login');
}
});
2.collections.js
export const LastLogin = new Ground.Collection('lastLogin', {connection: null});
大多数情况下,LastLogin.find().count() 为0,很少会为1,实际上lastLogin 集合中有几条记录可以在登录页面显示后正确打印出来,那就太迟了我。
我尝试通过 Tracker.autorun 附上以下代码
Tracker.autorun(function(){
if(LastLogin.find().count() > 0){
$urlRouterProvider.otherwise('main/home');
}else{
$urlRouterProvider.otherwise('login');
}
});
但没有帮助。
我的最终目的是让最后一个用户自动登录,即使处于离线状态。有更好的解决方案吗?