86

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

$location.path("/route");

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

ちょっと変だと思いますが、どうすればいいのかわかりません。使用しました

window.location = "#/route";

動作しますが、関数を使用したいと思いpath()ます。

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

4

6 に答える 6

109

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

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

于 2012-08-10T19:46:43.893 に答える
81

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

于 2012-12-07T10:32:13.660 に答える
20

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

于 2012-08-10T22:38:32.313 に答える
15

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

于 2015-01-29T14:34:46.203 に答える
2

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

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

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

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

$location.path("/app/register");
于 2016-07-11T20:47:45.870 に答える
0

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

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

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

于 2012-08-11T00:33:03.320 に答える