Javascript 使用$compile从指令加载html时,Angularjs | ng消息未显示错误消息
我正在从json通过ng repeat创建动态 my form.htmlJavascript 使用$compile从指令加载html时,Angularjs | ng消息未显示错误消息,javascript,angularjs,angularjs-directive,ng-messages,Javascript,Angularjs,Angularjs Directive,Ng Messages,我正在从json通过ng repeat创建动态 my form.html <form name="userForm" > <div ng-repeat="(key,box) in form.form_fields" > <accordion > <accordion-group heading="{{key}}" is-open="true"> <div
<form name="userForm" >
<div ng-repeat="(key,box) in form.form_fields" >
<accordion >
<accordion-group heading="{{key}}" is-open="true">
<div ng-repeat="field in box">
<field-directive field="field">
</field-directive>
</div>
</accordion-group>
</accordion>
</div>
</form>
所以基本上我是通过指令通过循环加载每种类型的字段textbox/radio/dropdown/email等html。
我使用$compile和linker加载这些小HTML。一切都很好,甚至验证也很好。我能够基于表单验证启用/禁用提交按钮,ng消息除外。如果我不这样使用指令
<form name="userForm" >
<div ng-repeat="(key,box) in form.form_fields" >
<accordion >
<accordion-group heading="{{key}}" is-open="true">
<div ng-repeat="field in box">
<div class="col-md-3 col-sm-6 col-xs-12" ng-if="field.field_type ==='textfield' ">
<md-input-container >
<label>{{field.field_title}}</label>
<input ng-model="field.field_value" name="{{field.field_id}}" type="text"
ng-required="true" md-maxlength="9" >
<div ng-messages="userForm.{{field.field_id}}.$error">
<p ng-message="maxlength">Your name is too long.</p>
<p ng-message="required">Your name is required.</p>
</div>
</md-input-container>
</div>
<div class="col-md-3 col-sm-6 col-xs-12" ng-if="field.field_type ==='number' ">
<md-input-container >
<label>{{field.field_title}}</label>
<input ng-model="field.field_value" name="{{field.field_id}}" type="text"
ng-required="true" md-maxlength="9" >
<div ng-messages="userForm.{{field.field_id}}.$error">
<p ng-message="maxlength">Your name is too long.</p>
<p ng-message="required">Your name is required.</p>
</div>
</md-input-container>
</div>
</div>
</accordion-group>
</accordion>
</div>
</form>
一切正常,包括ng消息。我还可以看到错误消息。
如果我使用指令,ng消息有什么问题。请帮忙 可能回答晚了,但你可以 var element1=angular.element您的html片段; ... 在某处追加元素1的逻辑 此后 $compileelement1scope在您的指令中,应该这样做 angular.element和$compile的顺序很重要