Angularjs 角度指令隐藏输入

Angularjs 角度指令隐藏输入,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有一个自定义指令: .directive('myDirective', function() { return { scope: {ngModel:'='}, link: function(scope, element) { element.bind("keyup", function(event) { scope.ngModel=0; scope.$a

我有一个自定义指令:

.directive('myDirective', function() {
  return {
      scope: {ngModel:'='},
      link: function(scope, element) {          
           element.bind("keyup", function(event) {
                  scope.ngModel=0;
                  scope.$apply();
            });          
      }
  }
});
这是按计划进行的,在keyup时将变量设置为0,但它并不反映输入本身的更改。此外,初始化时,模型的值不在输入中。以下是一个例子:


我遗漏了什么?

由于该指令创建了一个隔离的作用域,因此需要放置一个观察程序来填充数据

angular.module('test', []).directive('myDirective', function () {
    return {
        scope: {
            ngModel: '='
        },
        link: function (scope, element, attrs) {
            scope.$watch('ngModel', function (val) {
                element.val(scope.ngModel);
            });

            element.bind("keyup", function (event) {
                scope.ngModel = 0;
                scope.$apply();
                element.val(0); //set the value in the dom as well.
            });
        }
    }
});
或者,您可以将模板更改为

<input type="text" ng-model="$parent.testModel.inputA" my-directive>

数据将被填充,因为它会破坏您进行事件绑定的逻辑

因此,使用watcher更容易


进行初始更改,但对输入的任何后续更改都不会将输入恢复为0。