[解決済み] AngularJSでコントローラを2回実行する場合の対処法
2022-03-18 22:15:07
質問
AngularJSは、以下のようにいくつかのコードを2回、時にはそれ以上実行するそうですね。
$watch
イベント、モデルの状態を常にチェックするなど。
しかし、私のコード。
function MyController($scope, User, local) {
var $scope.User = local.get(); // Get locally save user data
User.get({ id: $scope.User._id.$oid }, function(user) {
$scope.User = new User(user);
local.save($scope.User);
});
//...
2回実行され、私のDBに2つのレコードが挿入されます。何年もこの問題に頭を抱えていたので、私は明らかにまだ学んでいるようです。
解決方法は?
アプリのルーターが指定したナビゲーションは
MyController
というように
$routeProvider.when('/',
{ templateUrl: 'pages/home.html',
controller: MyController });
でも、こんなのもありました。
home.html
:
<div data-ng-controller="MyController">
これでコントローラは2回消化されました。を削除することで
data-ng-controller
属性は問題を解決しました。あるいは
controller:
プロパティはルーティングディレクティブから削除することも可能でした。
この問題は、タブ型ナビゲーションを使用する場合にも現れます。例えば
app.js
が含まれるかもしれません。
.state('tab.reports', {
url: '/reports',
views: {
'tab-reports': {
templateUrl: 'templates/tab-reports.html',
controller: 'ReportsCtrl'
}
}
})
対応するレポートタブのHTMLは以下のようなものになります。
<ion-view view-title="Reports">
<ion-content ng-controller="ReportsCtrl">
また、この場合、コントローラを2回実行することになります。
関連
-
[解決済み] Angular ng-repeatの条件付きラップアイテム(ng-repeatのグループアイテム)。
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJSで$scope.$watchと$scope.$applyを使用するにはどうすればよいですか?
-
[解決済み] angular.serviceとangular.factoryの比較
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] AngularJSのコントローラからビューにHTMLを挿入する
-
[解決済み] あるAngularJSのコントローラが別のコントローラを呼び出すことはできますか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSの.$uibModalとは何ですか?
-
[解決済み] Angular ng-repeatの条件付きラップアイテム(ng-repeatのグループアイテム)。
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] createspyとcreatespyobjの違いは何ですか?
-
[解決済み] AngularJSで画像を表示する
-
[解決済み] AngularJS 。scope.apply()呼び出し時の$digest already in progressエラーを防ぐ。
-
angularjs統合ueditor入門
-
[解決済み] コントローラでフィルタを使用するには?
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] ng-modelとng-bindの違いは何ですか?