JavaScript - как смотреть объект

0

У меня есть объект и вы хотите запустить функцию, если этот объект изменится. Я пробовал использовать угловые $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;
            }
        },
  • 0
    Можем ли мы увидеть код, который вы уже пробовали?
  • 0
    что вы имеете в виду, когда говорите, что $watch работает только с setters ? пока у вас есть что-то в scope вы можете установить часы над ним.
Показать ещё 5 комментариев
Теги:
watch

1 ответ

0

Я не уверен, что вы подразумеваете под $ watch, "работающим без сеттеров".

scope.$watch('name', function(newValue, oldValue) {
  console.log('name has been changed: ' + $scope.name);
  scope.counter = scope.counter + 1;
});

Просто начните просто, поместите вышеуказанный код в контроллер и попробуйте простое поле, изменяющее переменную $ scope.name. Вы увидите на консоли, что часы запускаются.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню