$watch
AngularJS は、イベントやモデルの状態の継続的なチェックなど、一部のコードを 2 回、場合によってはそれ以上実行することを理解しています。
しかし私のコード:
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 つのレコードが挿入されます。私は長い間この問題に頭を悩ませてきたので、明らかにまだ学習中です。
ベストアンサー1
アプリ ルーターはナビゲーションをMyController
次のように指定しました。
$routeProvider.when('/',
{ templateUrl: 'pages/home.html',
controller: MyController });
しかし、私はこれも持っていましたhome.html
:
<div data-ng-controller="MyController">
これにより、コントローラが 2 回ダイジェストされました。HTMLdata-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 回実行されることになります。