4

我想在使用某种方法更改值时更新文本值,当我仍在输入文本但从文本框退出或通过脚本代码更改它时,该方法不应调用:

<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 方法,但在输入文本时不调用

4

2 回答 2

3

您可以使用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();
        }
    });
}]);
于 2015-07-27T08:15:51.963 回答
2

您可以直接使用 data-ng-model-options 来满足您的要求。像,

在这里你可以得到 data-ng-nmodel-options 的完整参考 https://docs.angularjs.org/api/ng/directive/ngModelOptions

该指令适用于 angular 1.4.x 版本(从它支持的 1.4.x 版本开始)

于 2015-07-27T10:58:59.050 回答