0

こんにちはユーザーが1ページに移動したときに、属性が不足しているコレクションのエントリがあるかどうかを確認し、そうであればユーザーをリダイレクトします。ここでは、コードがどのように見えるべきかの私の考えの一種であるが、私はMeteor-ui-routerルーティングロジック

.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'); 
     } 
     } 
    } 
}); 

は基本的に私がしようとしている

routes.jsファイルroutes.jsで作業を定期的にお届けするために見ることができませんUberのUIに似たようなことをしてください。最後のイベントのフィードバックがない場合、私はフィードバックページを表示します。助けてくれてありがとう。コードや情報が必要な場合はお知らせください。

+0

私はあなたがなるため、ルータにこのタイプのロジックを置くことはアンチパターンであることを特徴とする何かを読んでデータがロードされるのを待つ必要があります。誰でもこれを確認できますか? pendingVisitsコントローラにロジックを配置すると、ユーザーがリダイレクトされる前にビューが短時間点滅するように見えるようです –

答えて

1

私は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'}`) 
     } 
    }) 
    } 
} 
関連する問題