Angularjs - Как настроить $ смотреть на несколько значений
-
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
необходим, поскольку вы смотрите свойства детей.