Javascript 在Angular指令中编译后,将从输入中删除无效输入
我有一个指令,根据模型中的验证列表向输入添加自定义和本机验证。验证值可以根据表单中其他地方的输入进行更改(例如,结束日期不应早于开始日期) 但是,如果其中一个手表调用setValidations,它只在第一次编译元素。对于startdate示例,这意味着对于输入的第一个日期,enddate输入可以很好地编译,但是当我更改输入时,什么都不会发生(在调用compile之前记录属性确实会显示更新的值)。原始指令中的compile方法会在模型更改时重新编译,但会删除所有无效输入 编辑:已添加 看起来输入上的去抖动与此有关。不幸的是,我有一堆代码运行在我的ng更改上,我需要去盎司 edit2:将allowInvalid:true添加到ng模型选项时,不再删除值。我对无效值不太感兴趣,所以我不想使用它Javascript 在Angular指令中编译后,将从输入中删除无效输入,javascript,angularjs,validation,angularjs-directive,Javascript,Angularjs,Validation,Angularjs Directive,我有一个指令,根据模型中的验证列表向输入添加自定义和本机验证。验证值可以根据表单中其他地方的输入进行更改(例如,结束日期不应早于开始日期) 但是,如果其中一个手表调用setValidations,它只在第一次编译元素。对于startdate示例,这意味着对于输入的第一个日期,enddate输入可以很好地编译,但是当我更改输入时,什么都不会发生(在调用compile之前记录属性确实会显示更新的值)。原始指令中的compile方法会在模型更改时重新编译,但会删除所有无效输入 编辑:已添加 看起来输入
function questionValidations($compile, $parse) {
var directive = {
restrict: 'A',
link: linker
}
return directive;
function linker(scope, elem, attrs) {
var validations = $parse(attrs.questionValidations)(scope);
setValidations();
function setValidations() {
if (!validations || validations.length < 1) {
return;
}
// Logic that adds/removes attributes following the parsed validations above
// Additionally a service is called to determine if
// the validation value should be watched.
// Watch calls setValidations.
// Compile if there are new or removed attributes
if (new || removed) {
var newElem = angular.element(elem[0]);
elem.replaceWith(newElem);
$compile(newElem)(scope);
}
}
}
}
$compile(elem)(scope,
function(clone) {
elem.after(clone);
elem.remove();
});