将表单填充到 templateURL 以与 ngMessages 一起使用
Padding form into templateURL to be used with ngMessages
我是 angular 的新手,正在尝试指令。
我希望能够使用
<div ng-messages="form.$error">
<div ng-message="required">You did not enter a field</div>
</div>
在这样的自定义指令中,
<div class="form-group">
<label class="form-label" for="s-input-{{name}}">
{{text.human}}
<span ng-if="text.subtext" class="form-hint">{{text.subtext}}</span>
</label>
<select ng-required="required" ng-model="model" class="form-control" id="s-input-{{name}}" name="{{name}}" ng-options="t for t in text.select"></select>
<div ng-messages="form.$error">
<div ng-message="required">You did not enter a field</div>
</div>
</div>
我可以通过在指令元素下方使用 ng-messages 来使其工作 但不在其中。
虽然我真的想不通如何将表单传递到模板中以便 ng-messages 可以访问它。
我已经设置了一个 plunker 来向您展示我的基本设置。
http://plnkr.co/edit/ELx6Fd2eLN4CJjEnzRGM?p=preview
我知道我需要使用 require: '^form',
的表单,尽管我不确定如何在模板 URL.
中 use/access
我已经苦思冥想了一段时间,非常感谢您的帮助!谢谢
当您需要带有 require: '^form'
的表单指令时,您可以在 link
函数中访问该 FormController。然后你可以像这样简单地将控制器附加到指令的范围:
link: function(scope, element, attributes, formController) {
scope.form = formController;
}
然后在模板中引用它:
<div ng-messages="form.$error">
<div ng-message="required">You did not enter a field</div>
</div>
您始终可以将表单传递给您的指令。
javascript
app.directive('selectGov', function (){
return {
restrict: 'E',
templateUrl: 'select.html',
scope: {
text: "=?",
model: "=",
required: "=",
selectItems: "=?",
name: "@?",
form: "="
},
};
});
html
<select-gov model="person.phoneNumberType" text="q.phoneType" required="true" name="phoneType" form="myForm"></select-gov>
我是 angular 的新手,正在尝试指令。
我希望能够使用
<div ng-messages="form.$error">
<div ng-message="required">You did not enter a field</div>
</div>
在这样的自定义指令中,
<div class="form-group">
<label class="form-label" for="s-input-{{name}}">
{{text.human}}
<span ng-if="text.subtext" class="form-hint">{{text.subtext}}</span>
</label>
<select ng-required="required" ng-model="model" class="form-control" id="s-input-{{name}}" name="{{name}}" ng-options="t for t in text.select"></select>
<div ng-messages="form.$error">
<div ng-message="required">You did not enter a field</div>
</div>
</div>
我可以通过在指令元素下方使用 ng-messages 来使其工作 但不在其中。
虽然我真的想不通如何将表单传递到模板中以便 ng-messages 可以访问它。
我已经设置了一个 plunker 来向您展示我的基本设置。
http://plnkr.co/edit/ELx6Fd2eLN4CJjEnzRGM?p=preview
我知道我需要使用 require: '^form',
的表单,尽管我不确定如何在模板 URL.
我已经苦思冥想了一段时间,非常感谢您的帮助!谢谢
当您需要带有 require: '^form'
的表单指令时,您可以在 link
函数中访问该 FormController。然后你可以像这样简单地将控制器附加到指令的范围:
link: function(scope, element, attributes, formController) {
scope.form = formController;
}
然后在模板中引用它:
<div ng-messages="form.$error">
<div ng-message="required">You did not enter a field</div>
</div>
您始终可以将表单传递给您的指令。
javascript
app.directive('selectGov', function (){
return {
restrict: 'E',
templateUrl: 'select.html',
scope: {
text: "=?",
model: "=",
required: "=",
selectItems: "=?",
name: "@?",
form: "="
},
};
});
html
<select-gov model="person.phoneNumberType" text="q.phoneType" required="true" name="phoneType" form="myForm"></select-gov>