Ответ 1
ngChange предназначен только для ввода, если вы хотите прослушать модель, сделайте это
$scope.$watch('repair.test', function(newvalue,oldvalue) {
});
Ввод следующий:
<input type="text" ng-model="repair.test" ng-change="action()" />
action()
выполняется при вводе и изменении ввода вручную. Однако, если я изменяю значение repair.test какой-либо другой функцией программно, он не запускает действие ng-change. Я прочитал учебник angular, и это, вероятно, ожидаемое поведение.
https://docs.angularjs.org/api/ng/directive/ngChange
"Выражение не оценивается, когда изменение стоимости происходит от модели". Мне тоже нужно это. Как я могу запустить действие в контроллере, когда модель каким-то образом изменится? (ввод ввода или любой другой функцией)
Спасибо за помощь.
Edit:
Значение модели на самом деле является form.$valid
, у которого есть собственный контроллер формы вокруг него (я думаю), поэтому я использовал функцию действия, чтобы попытаться передать значение родительскому контроллеру. Поэтому $scope.$watch
в данный момент не работает, только когда он инициализирован.
ngChange предназначен только для ввода, если вы хотите прослушать модель, сделайте это
$scope.$watch('repair.test', function(newvalue,oldvalue) {
});
ngChange выражение оценивается только тогда, когда изменение входного значения вызывает привязку нового значения к модели.
Будет оцениваться не:
$parsers
, имеет
не измененоПопробуйте создать наблюдателя, используя $scope. $watch - $watch(watchExpression, listener, [objectEquality]);
Пример
$scope.$watch('repair.test', function(newValue, oldValue) {
// ...
});
Вы можете использовать функцию watcher в контроллере
$scope.$watch('repair.test', function() {
$scope.action();
});