web-dev-qa-db-ja.com

Aurelia JSの別のビューモデルにリダイレクトするにはどうすればよいですか?

Aurelia JS を使用してアプリケーションを作成しています。別のURLにリダイレクトするにはどうすればよいですか?まったく新しい ナビゲーションパイプラインステップ を作成せずにそれを行う方法はありますか?

ありがとう

34
Sunjay Varma

それを行うには、ルーターを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");
  }
}
46
Daniel Camarda

@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");
  }
}
18
jeff-h

関連情報の簡単な説明:「ルーター」の命名の問題は、ここで追跡しているものです。 https://github.com/aurelia/router/issues/34 この回答を後で読んでいる場合この問題は解決されているため、必要に応じてプロパティに「router」という名前を安全に付けることができます。

17
EisenbergEffect

おそらくわずかに異なるユースケースですが、似ているので投稿します:ビューを入力すると、例えばパラメータ、別のビューにリダイレクトしたいです。これは、activate()またはcanActivate()で発生する必要があります。

この場合、上で提案したnavigate()とnavigateToRoute()の両方が機能しません。

ただし、機能するのはreturn new Redirect('....')です。この場合、リダイレクトはaurelia-routerからインポートされます。

canActivate(param) {
    if (param.id == null)
        return new Redirect('/viewWhichDoesntNeedParam')
}
6
specimen