web-dev-qa-db-ja.com

AngularJSを使用したリダイレクト

私は別のルートにリダイレクトしようとしています:

$location.path("/route");

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

私はそれがちょっと奇妙だと思うが、私はこれを解決する方法を見つけていない。使った

window.location = "#/route";

それは動作しますが、path()関数を使用したいです。

なぜこれが起こっているのか誰にも分かりますか?

87
Tomarto

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

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

109

コントローラに$locationを注入することを忘れないでください。

82
Stepan Suvorov

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

20
dpactri

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

14
Raulucco

ルーティング方法を確認します。

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

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

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

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

コードを知らずに言うのは難しいです。私の最善の推測は、JavaScriptコードからテキストボックスの値を変更したときにonchangeイベントが発生しないことです。

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

チェック この質問 ;同じ問題、異なるフレームワーク。

0
Milan Jaric