Angularjs - Как настроить $ смотреть на несколько значений

StackOverflow https://stackoverflow.com//questions/23029835

  •  21-12-2019
  •  | 
  •  

Вопрос

Мне нужно смотреть на модельные изменения в объекте, который сидит в контроллере.Объект имеет несколько значений:

$scope.myModel = {
   first: 1,
   second: 1,
   third: 1
}
.

Я хочу поймать изменения в любой из этих значений, но не хочу настроить несколько наблюдателей на каждом отдельном значении, так как кажется расточительным.Могу ли я настроить один генеракодицетагкод, который вызывает, когда что-то в модели изменилось?

Это было полезно?

Решение

Передайте true как третий аргумент к функции $ Wasch, см. В разделе документыДля объема :

$ Watch (WatchExpression, [Слушатель], [objectegality]);
(...) objecteal: Сравните для равенства объекта с использованием Angular.equals вместо сравнения для опорного равенства

Когда lexealequality не является ложным или не установленным, это означает, что он будет только проверить, только ли это тот же объект или нет.Вместо этого настроить его на true, он проверит, на самом деле они равны или нет.

Так что часы будут выглядеть как:

$scope.$watch('variable', function(newValue, oldValue) {
    // function code
}, true);
.

Другие советы

$scope.$watch("myModel",function(v){

console.log(v);

},true)
.

должен сделать это.Параметр true необходим, поскольку вы смотрите свойства детей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top