angularjs - 触发除按键或按键之外的文本框的 ng-change 事件

标签 angularjs angularjs-directive angularjs-ng-change

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

<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 发生变化时调用更新方法,但不是在输入文本时调用

最佳答案

您可以使用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();
        }
    });
}]);

关于angularjs - 触发除按键或按键之外的文本框的 ng-change 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31647931/

相关文章:

AngularJs : Passing parameter to ng-click in directive

angularjs - 复选框中的 ng-change 被触发多次,因为 ng-click 超过了它

javascript - 如何使用 AngularJS 根据选择更改更新对象数组

javascript - 在 Javascript/AngularJS 中如何检查对象中每个变量的值是否相同?

javascript - 使用 Typescript 发出 Angular Directive(指令)

javascript - 如何检测语言何时发生变化?

javascript - 带 A 限制的指令的属性

javascript - Rgba 值未以 ng 样式更新

javascript - 为什么我会收到此错误?错误: Unable to locate a 'Type' by the name: 'User:#Default'

javascript - 仅调用一次特定方法 Angular JS