Je comprends qu'AngularJS exécute certains codes deux fois, parfois même plus, par exemple $watch
les événements, la vérification constante des états du modèle, etc.
Cependant mon code :
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);
});
//...
est exécuté deux fois, insérant 2 enregistrements dans ma base de données. Je suis manifestement encore en train d'apprendre, car cela fait des années que je me cogne la tête contre ce problème !
106 votes
Si votre contrôleur s'exécute deux fois, vérifiez que vous n'initialisez pas deux fois votre application Angular (en l'initialisant automatiquement avec
ng-app
et avec bootstrap manuel). Vérifiez également si vous avez attaché votre contrôleur à plusieurs éléments (avec ng-controller).7 votes
Pouvez-vous expliquer ce que vous entendez par "et avec bootstrap manuel" ?
2 votes
docs.angularjs.org/guide/bootstrap
2 votes
J'ai remarqué le comportement du contrôleur en double dans une application dont j'ai hérité lors du dépannage d'un problème de journalisation et en voyant les journaux de la console s'afficher deux fois. Le premier journal avait une valeur, mais le second était indéfini. Après avoir supprimé la directive HTML ng-controller pour le contrôleur, le deuxième déclenchement du journal de la console qui était indéfini a disparu.
2 votes
Si angular.js est ajouté deux fois, alors ceci peut aussi se produire