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。