我希望在使用某种方法更改值时更新文本值,当我仍在键入文本但从文本框退出或通过脚本代码更改时,方法不应调用:
<input type="text" ng-model ="model.value" ng-change = "update()"/>
应该包含update()方法,
我尝试的是:为这个文本框编写了一个指令,并且
scope.$watch('model', function(nval,oval){
if ((oVal === undefined) && (nVal != undefined)){
update()
}
});
它是第一次调用,但不是在模型值发生变化时。
我希望每当model.value改变时调用update方法,但是在输入文本时不想调用
答案 0 :(得分:3)
您可以使用ng-blur
,然后更改$watch
:
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();
}
});
}]);
答案 1 :(得分:2)
您可以直接使用data-ng-model-options来满足您的要求。 像,
在这里,您可以获得data-ng-nmodel-options的完整参考 https://docs.angularjs.org/api/ng/directive/ngModelOptions
此指令适用于角度1.4.x版本(从1.4.x版本支持)