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 が変更されるたびに更新メソッドを呼び出したいが、テキストの入力中は呼び出さない

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 に答える