2013-07-14 3 views
2

В моей форме есть 5 текстовых полей, и я хочу вызвать изменение ng, когда содержимое любых текстовых полей будет изменено. Теперь мой вопрос: «Вместо того, чтобы писать ng- измените 5 раз на 5 текстовых полей. Есть ли способ написать ng-change глобально, т. е. в теге формы, чтобы при наличии любого текстового поля в форме была вызвана соответствующая функция ng-изменения.Можем ли мы иметь ng-change глобально в anjularjs

can любой один помочь мне пожалуйста .....

ответ

1

Я согласен с marko, что самый простой способ - $ watch.

$scope.$watch('area1 + area2 + area3 + area4 + area5', function (newVal, oldVal) { 
    if(oldVal && newVal !== oldVal) { 
    console.log('Changed') 
    } 
}); 

Вот Plunker

0

У меня есть подобный случай, когда у меня есть сетка с сотнями входов, где входы являются динамичными, и мне нужно автосохранение данных после ввода изменен

Я использовал ваниль onChange на корпусе обертки, а затем проверил целевое значение.

<div class="wrapper" onchange="onChangeHanler(event)"> 
    <input ng-repeat="item in items" ng-model="item.value"> 
</div> 

В мой контроллер:

angular.controller('gridController', function($scope) {   

    // this method belongs to window and not the current $scope, remember we are breaking ng rules here :(
    window.onChangeHandler = function(ev) { 
     console.log(ev.target.value) // print out the value changed     
     queueForAutoSave($scope.items); 
    }  
}) 

PS.

Downvoters Я знаю, что это не самый лучший способ осуществить это, поскольку его againts угловые нормы и создавать проблемы для модульных тестов, и т.д ..., но теперь в случае исполнения это 100x лучше, чем связывание ng-change для сотен входов

Смежные вопросы