Aurelia JS を使用してアプリケーションを作成しています。別のURLにリダイレクトするにはどうすればよいですか?まったく新しい ナビゲーションパイプラインステップ を作成せずにそれを行う方法はありますか?
ありがとう
それを行うには、ルーターをViewModelに挿入し、メソッド navigate(route) を使用します
以下に例を示します。
import {Router} from 'aurelia-router';
export class MyVM {
static inject() { return [Router]; }
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
@Daniel Camardaの優れた回答を少し更新すると思いました。 2016年2月の時点で、Aureliaのinject
デコレーターを使用できます。また、router
命名の問題も解決されました。
import {inject} from 'aurelia-framework';
import {Router} from 'aurelia-router';
@inject(Router)
export class MyVM {
constructor(router){
this.router = router;
}
someMethod(){
this.router.navigate("myroute");
}
}
関連情報の簡単な説明:「ルーター」の命名の問題は、ここで追跡しているものです。 https://github.com/aurelia/router/issues/34 この回答を後で読んでいる場合この問題は解決されているため、必要に応じてプロパティに「router」という名前を安全に付けることができます。
おそらくわずかに異なるユースケースですが、似ているので投稿します:ビューを入力すると、例えばパラメータ、別のビューにリダイレクトしたいです。これは、activate()
またはcanActivate()
で発生する必要があります。
この場合、上で提案したnavigate()とnavigateToRoute()の両方が機能しません。
ただし、機能するのはreturn new Redirect('....')
です。この場合、リダイレクトはaurelia-routerからインポートされます。
canActivate(param) {
if (param.id == null)
return new Redirect('/viewWhichDoesntNeedParam')
}