Meteor angular-ui-router路由逻辑
Meteor angular-ui-router routing logic
您好,当用户被定向到一个页面时,我想执行逻辑检查以查看集合中是否有任何条目缺少属性,如果有则重定向用户。这是我对代码外观的一些想法,但我看不到让订阅在 routes.js 文件
中工作
routes.js
.state('pendingVisits', {
url: '/pendingVisits',
templateUrl: ()=> {
if (Meteor.isCordova) {
return '/packages/visitry-mobile/client/visits/pending-visits/pending-visits.html';
} else {
return '/packages/visitry-browser/client/visits/pending-visits/pending-visits.html';
}
},
controller: 'pendingVisitsCtrl as pendingVisits',
resolve:{
feedback: function($location){
Meteor.subscribe('visits');
var v = Visits.findOne({feedbackId});
if(v){
$location.url('/visits/'+v._id+'/feedback');
}
}
}
});
基本上我正在尝试做一些类似于 Uber UI 的事情,如果上次活动没有反馈,我会显示反馈页面。谢谢您的帮助。如果您需要更多代码或信息,请告诉我。
我可以用 Tracker.autorun() 解决这个问题这是我使用的解决方案:
resolve:{
feedback:function($location){
const visits = Meteor.subscribe('visits');
Tracker.autorun(()=>{
const isReady = visits.ready();
var visitNeedingFeedback = Visits.findOne({feedbackId:null})
if(isReady && visitNeedingFeedback){
console.log("Yes lets go to feedbacks");
$location.url('/feedback/'+ visitNeedingFeedback._id);
}else{
console.log(`Visits data is ${isReady ? 'ready' : 'not ready'}`)
}
})
}
}
您好,当用户被定向到一个页面时,我想执行逻辑检查以查看集合中是否有任何条目缺少属性,如果有则重定向用户。这是我对代码外观的一些想法,但我看不到让订阅在 routes.js 文件
中工作routes.js
.state('pendingVisits', {
url: '/pendingVisits',
templateUrl: ()=> {
if (Meteor.isCordova) {
return '/packages/visitry-mobile/client/visits/pending-visits/pending-visits.html';
} else {
return '/packages/visitry-browser/client/visits/pending-visits/pending-visits.html';
}
},
controller: 'pendingVisitsCtrl as pendingVisits',
resolve:{
feedback: function($location){
Meteor.subscribe('visits');
var v = Visits.findOne({feedbackId});
if(v){
$location.url('/visits/'+v._id+'/feedback');
}
}
}
});
基本上我正在尝试做一些类似于 Uber UI 的事情,如果上次活动没有反馈,我会显示反馈页面。谢谢您的帮助。如果您需要更多代码或信息,请告诉我。
我可以用 Tracker.autorun() 解决这个问题这是我使用的解决方案:
resolve:{
feedback:function($location){
const visits = Meteor.subscribe('visits');
Tracker.autorun(()=>{
const isReady = visits.ready();
var visitNeedingFeedback = Visits.findOne({feedbackId:null})
if(isReady && visitNeedingFeedback){
console.log("Yes lets go to feedbacks");
$location.url('/feedback/'+ visitNeedingFeedback._id);
}else{
console.log(`Visits data is ${isReady ? 'ready' : 'not ready'}`)
}
})
}
}