Javascript 如何将ng更改处理程序动态添加到输入

Javascript 如何将ng更改处理程序动态添加到输入,javascript,angularjs,Javascript,Angularjs,app.directive('textForm',函数($compile){ 返回{ 限制:'E', 替换:正确, templateUrl:“textForm.html”, 范围:{ 标签:“@”, 型号:“=”, 键入:“@”, 名称:“@”, }, 链接:功能(范围、元素){ scope.log=函数(){ 控制台日志(1); }; var input=element.find('.form control'); attr({'ng-change':'log()}); $compile(el

app.directive('textForm',函数($compile){
返回{
限制:'E',
替换:正确,
templateUrl:“textForm.html”,
范围:{
标签:“@”,
型号:“=”,
键入:“@”,
名称:“@”,
},
链接:功能(范围、元素){
scope.log=函数(){
控制台日志(1);
};
var input=element.find('.form control');
attr({'ng-change':'log()});
$compile(element.contents())(范围);
}
}
});

{{label}}

我认为问题在于您正在编译
文本表单
元素(由指令给定),但您将ng change属性附加到
.form控件
元素(它甚至不是指令的子元素)。所以angular没有意识到这一点,也没有正确地整合ng变化

我认为您应该对您希望以这种方式控制的元素使用此指令,即:

<input text-form type="{{type||'text'}}" name="{{name}}" class="form-control" ng-model="model">

并将指令限制为“A”或“AE”


不确定,但我认为如果您的指令放在父级(例如表单元素)上也会起作用。

您在HTML中引用的
指令在哪里?这样做的用例是什么?@troy您将在
ng中添加什么动态更改
&基于@georgeawg实际上我想添加的模式,ng max,ng min等进行输入验证,但有些输入需要这些,有些则不需要。为了使这个指令更加可定制,我需要动态添加一些属性。改变只不过是一种改变example@troy看,我正在向DOM添加动态属性..有意义,但我正在尝试创建一个引导内联表单,所以我无法更改DOM结构嗯。。。但您并没有改变dom结构,只需要在调用compileMething(如
$compile(input)(scope))时将指令放在正确的元素上?它不起作用。我用Pankaj Parkar的方法解决了我的问题