【发布时间】:2014-03-07 12:04:58
【问题描述】:
您好,我的验证指令有问题。首先,我有创建输入元素的指令,其中我有基于一些参数的指令,这些参数告诉我们是否应该启动这个校准......它看起来像这样:
app.directive('ngAttr', function($compile){
return {
scope:{},
link: function (scope, element, attrs){
var opts = scope.$eval(attrs.ngAttr);
if(opts.condition){
element.attr(opts.attrName, opts.condition)
}
}
};
});
它根据传递给它的条件添加属性...如果我想有条件地添加指令,我会这样做:
ng-attr="{condition: {{opts.validatePhone}}, attrName:'validate-phone'}"
作为属性 tu 我以前创建输入的指令...问题是 validate-phone 指令仅在创建指令时触发一次,它不会对输入处理程序做出反应...代码validate 指令是:
app.directive('validatePhone', function($compile){
return{
require: 'ngModel',
link: function(scope, element, attrs, ngModel){
function validate(val){
console.log(val)
}
scope.$watch(function() {
return ngModel.$viewValue;
}, validate);
}
};
});
这并不简单,但是当我更改输入时,console.log() 不起作用。
我创建了一个 plunker,如果有人有想法,它会更容易检查...http://plnkr.co/edit/CgVCV58goFS9GKLBtRrw?p=preview
【问题讨论】:
-
好的,我记录了 validatePhone 指令的范围,它不是应用于表单输入指令的范围,而是父范围,嗯,为什么...
标签: javascript angularjs