У меня есть объект и вы хотите запустить функцию, если этот объект изменится. Я пробовал использовать угловые $watch
, но это работает только без setters
.
В поисках другого решения я нашел obj.observe
но mdn
говорит, что он устарел и не получил широкой поддержки. так есть ли другой способ запустить функцию, если меняет объект?
Редактировать:
// watch using this doen't work, when update through ng-model
Object.defineProperties(self, {
'myprop': {
get: function () {return _myprop; },
set: function (value) {
_myprop = value;
}
},
Я не уверен, что вы подразумеваете под $ watch, "работающим без сеттеров".
scope.$watch('name', function(newValue, oldValue) {
console.log('name has been changed: ' + $scope.name);
scope.counter = scope.counter + 1;
});
Просто начните просто, поместите вышеуказанный код в контроллер и попробуйте простое поле, изменяющее переменную $ scope.name. Вы увидите на консоли, что часы запускаются.
$watch
работает только сsetters
? пока у вас есть что-то вscope
вы можете установить часы над ним.