Как вызвать ng-change, когда ng-модель изменена, но не явно

0

Ну, название вопроса может быть непонятным. Итак, здесь я объясню:

У меня есть поле ввода I1, чья ng-модель привязана к объекту.

Тогда у меня есть еще несколько полей ввода, значения которых, если они изменены, суммируются и отражаются в ng-модели I1.

Теперь, когда I1 изменяется явно, набрав поле ввода, его ng-change запускается. Однако, если значение I1 изменяется из-за изменения нескольких полей ввода, ng-изменение I1 не запускается.

Короче говоря, значение, отображаемое в I1, изменяется из-за изменений в нескольких дополнительных полях ввода, но его ng-изменение не запускается.

Как я могу вызвать ng-change, даже когда ng-модель мягко обновлена. Надеюсь, читатели поняли эту идею, поскольку я знаю, что ее стало немного сложно читать

  • 0
    Пожалуйста, поделитесь связанным кодом для лучшего понимания.
  • 0
    усложнение чтения может быть уменьшено, если вы поделитесь кодом
Показать ещё 3 комментария
Теги:
binding

2 ответа

0
Лучший ответ

Вы можете использовать часы на своей модели и достичь желаемого результата -

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]

Но рекомендуется первый подход.

  • 0
    Спасибо, Раби и Четан, оба предложили один и тот же подход. Однако, как можно использовать $ emit в этом случае, я только что понял, что еще несколько полей ввода находятся внутри ng-повторения div, где I1. **. Могу ли я запустить $emit('ng-change', arguments) или что-то подобное, чтобы распространить изменение вверх
  • 0
    Да, ты можешь. Но если операция выполняется на том же контроллере, вы не захотите генерировать событие, вам будет достаточно посмотреть.
0

Получите идею из нижеследующего примера: -

функция MyController ($ scope) {

$ scope.modelVar = 1;

$ scope. $ watch ('modelVar', function() {

     alert('hey, modelVar has changed!');

  // here you can call onChange event.

});

}

Ещё вопросы

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