Ну, название вопроса может быть непонятным. Итак, здесь я объясню:
У меня есть поле ввода I1, чья ng-модель привязана к объекту.
Тогда у меня есть еще несколько полей ввода, значения которых, если они изменены, суммируются и отражаются в ng-модели I1.
Теперь, когда I1 изменяется явно, набрав поле ввода, его ng-change запускается. Однако, если значение I1 изменяется из-за изменения нескольких полей ввода, ng-изменение I1 не запускается.
Короче говоря, значение, отображаемое в I1, изменяется из-за изменений в нескольких дополнительных полях ввода, но его ng-изменение не запускается.
Как я могу вызвать ng-change, даже когда ng-модель мягко обновлена. Надеюсь, читатели поняли эту идею, поскольку я знаю, что ее стало немного сложно читать
Вы можете использовать часы на своей модели и достичь желаемого результата -
HTML
<input type="text" ng-model="l1" ng-change="doSomething()" />
контроллер
$scope.$watch(function() { return $scope.l1;},
function(newVal, oldVal) {
if (newVal !== oldVal) {
$scope.doSomething();
}
});
Кроме того, вы можете посмотреть этот поток. Как вызвать программный вызов ng-click [AngularJS]
Но рекомендуется первый подход.
$emit('ng-change', arguments)
или что-то подобное, чтобы распространить изменение вверх
Получите идею из нижеследующего примера: -
функция MyController ($ scope) {
$ scope.modelVar = 1;
$ scope. $ watch ('modelVar', function() {
alert('hey, modelVar has changed!'); // here you can call onChange event.
});
}