Eu tenho uma página da web que serve como editor de uma única entidade, que fica como um gráfico profundo na propriedade $ scope.fieldcontainer. Depois de receber uma resposta da minha API REST (via $ resource), adiciono um relógio ao 'fieldcontainer'. Estou usando este relógio para detectar se a página / entidade está "suja". No momento, estou fazendo o botão salvar saltar, mas realmente quero tornar o botão invisível até que o usuário direcione o modelo.
O que estou obtendo é um único gatilho do relógio, o que acho que está acontecendo porque a atribuição .fieldcontainer = ... ocorre imediatamente após a criação do relógio. Eu estava pensando em usar apenas uma propriedade "dirtyCount" para absorver o alarme falso inicial, mas isso parece muito hacky ... e achei que deveria haver uma maneira "angular idiomática" de lidar com isso - eu não sou o único usando um relógio para detectar um modelo sujo.
Aqui está o código em que eu ajusto meu relógio:
$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);
});
Eu continuo pensando que deve haver uma maneira mais limpa de fazer isso do que guardar meu código "UI dirtying" com um "if (dirtyCount> 0)" ...
undefined
. Ele tem um valor padrão, necessário no caso de minha atualização de modelo, não apresentar todas as informações. Portanto, alguns valores não mudam, mas precisam ser acionados.