別の方法でこの問題に取り組まなければなりません。なぜそれを使用せず、別のViewModelを読み込むために、ViewModelにナビゲートしてその作成をトリガーしたいのですか?最高の効率で非効率だと思われますか?
Aureliaはルータのパイプラインを公開していますので、このチェックを行い、それに応じてリダイレクトしてください。予備活性化のステップhereを見て、あなたはこのような何か(擬似コード)を書くことができます:あなたは、たとえばユーザーを持っているあなたは、リダイレクトを望んでいないケースを持つことができます
configureRouter(config, router) {
function step() {
return step.run;
}
step.run = async (navigationInstruction, next) => {
if(await this.service.RecordExists(navigationInstruction.queryParams...)
{
return next()
} else {
next.cancel(new Redirect('your other page'))
}
};
config.addPreActivateStep(step)
config.map([
{ route: ['', 'home'], name: 'home', moduleId: 'home/index' },
{ route: 'users', name: 'users', moduleId: 'users/index', nav: true },
{ route: 'users/:id/detail', name: 'userDetail', moduleId: 'users/detail' },
{ route: 'files/*path', name: 'files', moduleId: 'files/index', href:'#files', nav: true }
]);
}
EDIT
ブックマークBASEURL /てBusinessObject/IDに望む、そしてオブジェクトが実際に は、その後、あなたのViewModelにgetViewStrategy()
機能を使用することができますが存在する前に、URLがナビゲートです:
getViewStrategy(){
if(this.businessObj){
return 'existingObjectView.html';
} else {
return 'nonExisting.html';
}
}
ありがとうあなたのコードを見て、返信してください。リダイレクトが起こっていると思われますので、避けたいURLを変更してください。 next.cancel(新しいリダイレクト( 'あなたの他のページ'))。 – crypted
リダイレクトを避けたい理由を説明できますか?あなたは同じviewmodelで2つのビューを使い、2つのルートを用意するだけで簡単に設定できます。あなたは '' 'compose''要素を使って問題を解決することができますが、複雑さが増し、あなたのケースに追加の値が表示されません –
、このページをブックマークすることができます。利用可能かもしれません。 – crypted