Ho una pagina web che funge da editor per una singola entità, che funge da grafico profondo nella proprietà $ scope.fieldcontainer. Dopo aver ricevuto una risposta dalla mia API REST (tramite $ risorse), aggiungo un orologio a "fieldcontainer". Sto usando questo orologio per rilevare se la pagina / entità è "sporca". In questo momento sto facendo rimbalzare il pulsante di salvataggio, ma in realtà voglio rendere il pulsante di salvataggio invisibile fino a quando l'utente non sporca il modello.
Quello che sto ricevendo è un singolo trigger dell'orologio, che penso stia accadendo perché l'assegnazione .fieldcontainer = ... ha luogo immediatamente dopo la creazione dell'orologio. Stavo pensando di usare solo una proprietà "dirtyCount" per assorbire il falso allarme iniziale, ma mi sembra molto confuso ... e ho pensato che ci doveva essere un modo "angolare idiomatico" per affrontare questo - non sono l'unico utilizzando un orologio per rilevare un modello sporco.
Ecco il codice in cui ho impostato l'orologio:
$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);
});
Continuo a pensare che ci debba essere un modo più pulito per farlo che proteggere il mio codice "UI dirtying" con un "if (dirtyCount> 0)" ...
undefined
. Ha un valore predefinito che è necessario nel caso in cui l'aggiornamento del mio modello non fornisca tutte le informazioni. Quindi alcuni valori non cambiano ma devono innescarsi.