У меня есть веб-страница, которая служит редактором для одного объекта, который сидит как глубокий граф в свойстве $scope.fieldcontainer. После получения ответа от моего REST API (через $resource), я добавляю часы в полевой контейнер. Я использую эти часы, чтобы определить, является ли страница/объект "грязной". Прямо сейчас я делаю откат кнопки сохранения, но на самом деле я хочу сделать кнопку сохранения невидимой, пока пользователь не сравнит модель.
То, что я получаю, является единственным триггером часов, который, как я думаю, происходит потому, что назначение .fieldcontainer =... происходит сразу после создания моих часов. Я думал о том, что просто использовал свойство "dirtyCount" для поглощения первоначальной ложной тревоги, но это очень опасно... и я подумал, что должен быть "Angular идиоматический" способ справиться с этим - я не только один, используя часы для обнаружения грязной модели.
Здесь код, где я устанавливаю часы:
 $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);
            });
Я просто продолжаю думать, что должен быть более чистый способ сделать это, чем защищать мой "грязный" код UI с помощью "if (dirtyCount > 0)"...
