AngularJSを使用してリダイレクトする


86

以下を使用して別のルートにリダイレクトしようとしています:

$location.path("/route");

しかし、何らかの理由でそれは機能していません。jQuery-UIを使用してオートコンプリートウィジェットを作成し、ユーザーがオプションを選択すると、スコープから関数を呼び出します。デバッグして関数に入りましたが、他のルートにリダイレクトされることはありません。キーを押したときだけルートが変わります。

ちょっと変だと思いますが、どうやって解決したらいいのかわかりません。使った

window.location = "#/route";

動作しますが、このpath()機能を使いたいです。

なぜこれが起こっているのか誰かが知っていますか?

回答:


109

動作しないコードの例を使用すると、この質問に簡単に答えることができますが、この情報を使用すると、AngularJSダイジェストの外部で$ location.pathを呼び出していると思います。

ディレクティブでこれを試してください scope.$apply(function() { $location.path("/route"); });


どうもありがとうございました。動作しない例を投稿しなかったことをお詫びします。しかし、これは私のコードに必要なものでした。
トマルト2012

23
$ httpリクエスト内の.successメソッドでこれを機能させる方法はありますか?@Tomarto
Nicholas Kreidberg 2013年

2
Firefox(30〜)コンソールで、$ applyサイクルがビジーであるというエラーが発生します
svarog 2015年

1
これはどのように機能するはずですか?次のエラーが発生します:エラー:[$ rootScope:inprog] $ applyはすでに進行中ですerrors.angularjs.org/1.2.15/$rootScope/inprog?p0=%24applyatangular.js:78 ....。したがって、それはwindows.location =「」..として機能していません
バイバブ

1
@NicholasKreidbergにも同じ質問があり、$ scope。$ apply();を追加するだけです。$ location.path( "/ route");の直後 私のために働いた。
Ernesto Allely 2016年


20

html5ルーティングを使用していないと仮定して、を試してください$location.path("route")。これにより、ブラウザが目的の場所にリダイレクトされます#/route


15

Angularアプリケーションからリダイレクトする必要がある場合は、を使用してください$window.location。それが私の場合でした。うまくいけば、誰かがそれが役に立つと思うでしょう。


2

ルーティング方法を確認してください。

ルーティング状態がこのような場合

 .state('app.register', {
    url: '/register',
    views: {
      'menuContent': {
        templateUrl: 'templates/register.html',
      }
    }
  }) 

その後、使用する必要があります

$location.path("/app/register");

0

あなたのコードを知らずに言うのは難しいです。onchangeJavaScriptコードからテキストボックスの値を変更しても、イベントは発生しないと思います。

これを機能させるには2つの方法があります。1つはonchange自分で呼び出すことで、もう1つはテキストボックスがフォーカスを失うのを待つことです。

この質問を確認してください; 同じ問題、異なるフレームワーク。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.