如何为AngularJS创建变更指令?

Szy*_*ski 13 events angularjs

通常,每次用户按下键时,ng-model都会更新绑定模型:

<input type="text" ng-model="entity.value" />
Run Code Online (Sandbox Code Playgroud)

这在几乎所有情况下都很有效.

但是当onchangeup/onkeydown事件发生时,我需要它来更新onchange事件.

在旧版本的角度中,有一个ng-model-instant指令,它与ng-model现在一样工作(至少对于用户来说 - 我对它们的实现一无所知).因此,在旧版本中,如果我刚刚给出了ng-model,它就是更新模型onchange,当我指定ng-model-instant时,它正在更新模型onkeypup.

现在我需要ng-model用于元素的"更改"事件.我不希望它是即时的.这样做最简单的方法是什么?

编辑

输入仍然必须反映模型的任何其他更改 - 如果模型将在其他位置更新,则输入的值应反映此更改.

我需要的是让ng-model指令像在旧版本的angularjs中一样工作.

以下是我正在尝试做的解释:http: //jsfiddle.net/selbh/EPNRd/

Sun*_*hah 20

在这里,我为您创建了onChange指令.演示:http://jsfiddle.net/sunnycpp/TZnj2/52/

app.directive('onChange', function() {    
    return {
        restrict: 'A',
        scope:{'onChange':'=' },
        link: function(scope, elm, attrs) {
            scope.$watch('onChange', function(nVal) { elm.val(nVal); });            
            elm.bind('blur', function() {
                var currentValue = elm.val();
                if( scope.onChange !== currentValue ) {
                    scope.$apply(function() {
                        scope.onChange = currentValue;
                    });
                }
            });
        }
    };        
});
Run Code Online (Sandbox Code Playgroud)