AngularJSコントローラ内でURLのパラメータを読み取るにはどうすればよいですか?AngularJS:コントローラ内から経路パラメータを読み取る
私はhttp://localhost/var/:value
のようなURLを持っていて、/var/:value
URLのコントローラ内の変数に値を格納したいとします。
私は$routeParams.value
とを使用してみましたが$routeParams
は、冒頭で定義されていないと$route
が動作しません。
AngularJSコントローラ内でURLのパラメータを読み取るにはどうすればよいですか?AngularJS:コントローラ内から経路パラメータを読み取る
私はhttp://localhost/var/:value
のようなURLを持っていて、/var/:value
URLのコントローラ内の変数に値を格納したいとします。
私は$routeParams.value
とを使用してみましたが$routeParams
は、冒頭で定義されていないと$route
が動作しません。
問題は、おそらく$routeParams
または$route
を、ルート変更が発生する前に実行されているコントローラに注入することです。あなたのメイン/マスター/ページコントローラ。
特定のルート(ルートを定義するときにcontroller
プロパティで指定)のコントローラーに注入すると、それが機能します。
てみ
$scope.$on('$routeChangeSuccess', function (ev, current, prev) {
// ...
});
あなたは絶対に正しいです。クライアントは接続時にURLを直接呼び出すため、ルート変更が発生する前にコントローラが実行されます。 経路変更がないため、投稿されたコードは機能しません。この問題を解決するための他の提案はありますか? – ctitze
AngularJSがルーティングを処理せずにクライアントが直接URLにヒットした場合、 '$ routeParams'を使用することはできません。 '$ routeParams'は' $ routeProvider.when(/ movies /:genre、{...}) 'を使用している場合にのみ動作します。そうでなければ、手動で値を抽出する必要があります。質問:AngularJSルーティングを使用していますか、またはURLから値を抽出する方法を探していますか? – Martin
私は 'ng-view'(角表現型)に異なる' templateUrls'をロードしたいので、私はルーティングのためにAngularJSを使用しています。しかし、答えがありがとう、私は別のアプローチで私の問題を解決する必要があるようです。 – ctitze
要件を使用するようにコードを変更するには:
function functionName($scope, $routeParams){$scope.value = $routeParams.valName;}
HTMLビュー:
Route provider set up as: http://localhost/var/:valName
機能として設定アプリのモジュールである 'ngRoute' を確認してください:
{{value['valName']}}
「$ routeParamsは最初は定義されておらず、$ routeは機能しません」とはどういう意味ですか?あなたはそれらを動作させようとしたところでコードを共有できますか? $ route.currentと$ routeParamsの両方は、コントローラプロバイダにルートと注入された依存関係をコントローラに設定した正しい結果を与える必要があります。 –