[解決済み] AngularJSの$locationでパスが変更されない
2022-07-20 08:21:53
質問
フォーム送信後にページのURLを変更するのに問題があります。
以下は私のアプリのフローです。
- ルートが設定され、URLは何らかのフォームページに認識されます。
- ページがロードされ、コントローラが変数を設定し、ディレクティブが起動されます。
- AJAXを使用した特殊なフォーム送信を行う、特殊なフォームディレクティブが発行されます。
-
AJAXが実行された後(AngularはAJAXの面倒を見ません)、コールバックが発生し、ディレクティブは
$scope.onAfterSubmit
関数を呼び出して、場所を設定します。
問題は、場所を設定した後、何も起こらないということです。試しに location パラメータを
/
にも設定してみましたが... ダメでした。フォームを送信しないようにすることもやってみました。何も効果がありません。
に到達するかどうかテストしてみました。
onAfterSubmit
関数に到達しているかどうかをテストしました (到達しています)。
私の唯一の考えは、何らかの理由で関数のスコープが変更された (ディレクティブから呼び出されたため) ことです。しかし、どのようにして
onAfterSubmit
を呼び出すことができるのでしょうか?
以下は私のコードです。
var Ctrl = function($scope, $location, $http) {
$http.get('/resources/' + $params.id + '/edit.json').success(function(data) {
$scope.resource = data;
});
$scope.onAfterSubmit = function() {
$location.path('/').replace();
};
}
Ctrl.$inject = ['$scope','$location','$http'];
誰か助けてくれませんか?
どのように解決するのですか?
私は数日前に同じような問題がありました。私の場合、問題は私がサードパーティのライブラリ(正確にはjQuery)で何かを変更したことでした。この場合、関数の呼び出しと変数の設定が機能しても、Angularは常に変更があることを認識しないため、決して消化されません。
apply()はangularフレームワークの外からangularで式を実行するために使われます。(例えば、ブラウザのDOMイベント、setTimeout、XHRやサードパーティライブラリから).
を使ってみてください。
$scope.$apply()
を呼び出した後、すぐに
replace()
を呼び出してAngularに変更されたことを知らせます。
関連
-
[解決済み] ページロード時にAngularJSのコントローラ関数を実行する方法は?
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
angularでのng-repeatとtrack by
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] ng-modelとng-bindの違いは何ですか?
-
[解決済み】AngularJSのディレクティブスコープにおける「@」と「=」の違いは何ですか?
-
[解決済み】AngularJSのスコーププロトタイピング/プロトタイピング継承のニュアンスとは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] data-ng-file-selectが動作しないのはなぜですか?
-
[解決済み] ReferenceError: Angularは定義されていません。
-
[解決済み] Angular UI-Routerのマルチビュー
-
[解決済み] Angularのui-routerでデフォルトの状態を設定する方法
-
[解決済み] angularjsで$compileを操作する
-
angularjs統合ueditor入門
-
angularでのng-repeatとtrack by
-
[解決済み] どのように$state.goにパラメータを追加しますか?
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み] AngularJSのng-repeatでキーと値を反復処理する方法は?