2015-07-27 4 views
3

Я хочу обновить текстовое значение, когда значение изменено с помощью какого-либо метода, метод не должен вызывать, когда я все еще печатаю текст, но при выходе из текстового поля или изменить его с помощью кода сценария:Событие с пожаром ng для текстового поля, отличного от нажатия клавиши или нажатия клавиши

<input type="text" ng-model ="model.value" ng-change = "update()"/> 

, что должно содержать обновления() метод,

что я попытался это: написал директиву для этого текстового поля, и

scope.$watch('model', function(nval,oval){ 
    if ((oVal === undefined) && (nVal != undefined)){ 
    update() 
    } 
}); 

Он вызывается в первый раз, но не всякий раз, когда значение модели изменилось.

Я хочу вызвать метод обновления всякий раз, когда model.value изменился, но не при вводе текста

+0

вы можете попробовать использовать '$ scope. $ Apply()' после обновления. – atinder

ответ

2

Вы можете использовать параметры данных-ng-model непосредственно для достижения ваших требований. Мол,

здесь вы можете получить полную ссылку на данных-нг-nmodel-опций https://docs.angularjs.org/api/ng/directive/ngModelOptions

эта директива будет работать на версии угловой 1.4.x (от 1.4.x версии он Suppports)

2

Вы можете использовать ng-blur и вы должны изменить ваш $watch:

JSFiddle

HTML:

<div ng-app="myApp" ng-controller="dummy"> 
    <input type="text" ng-model="model.value" ng-blur="update()"/> 
</div> 

JS:

angular.module('myApp', []) 
    .controller('dummy', ['$scope', function ($scope) { 
    $scope.model = { 
     value: 'hello' 
    }; 
    $scope.update = function() { 
     console.log("changed!"); 
    }; 
    $scope.$watch('model.value', function (nval, oval) { 
     if (oval !== nval) { 
      $scope.update(); 
     } 
    }); 
}]); 
+0

даже model.value будет изменено и на другие методы, так что я отсутствую, обновление не должно вызываться, когда фокус находится в текстовом поле –