J'ai une page web qui sert de l'éditeur pour une seule entité, qui se trouve comme un graphe dans le $scope.fieldcontainer de la propriété. Après je reçois une réponse de mon API REST (via $ressource), j'ajoute une montre pour 'fieldcontainer'. J'utilise cette montre pour détecter si la page/l'entité est "sale". Droit maintenant, je suis en train de faire le bouton enregistrer de rebond, mais je veux réellement faire le bouton enregistrer invisible jusqu'à ce que l'utilisateur souillures du modèle.
Ce que je reçois est d'un seul déclencheur de la montre, je pense que c'est dû au fait que l' .fieldcontainer = ... cession a lieu immédiatement après que j'ai créer ma montre. Je pensais simplement à l'aide d'un "dirtyCount" propriété d'absorber la première fausse alarme, mais qui se sent très hacky ... et j'ai pensé, il y a un "Angulaire idiomatiques" façon de traiter avec cela - je ne suis pas le seul à l'aide d'une montre pour détecter un sale modèle.
Voici le code où j'ai mis ma montre:
$scope.fieldcontainer = Message.get({id: $scope.entityId },
function(message,headers) {
$scope.$watch('fieldcontainer',
function() {
console.log("model is dirty.");
if ($scope.visibility.saveButton) {
$('#saveMessageButtonRow').effect("bounce", { times:5, direction: 'right' }, 300);
}
}, true);
});
Je viens de continuer à penser qu'il y a obtenu d'être d'une façon plus propre de faire cela que garde de mon "UI salir" code "si (dirtyCount >0)"...