AngularJS 多重包含
AngularJS Multiple Transclusion
我有一个包含多个包含的 AngularJS 指令,一个包含槽由一个表单包装。
除表单验证消息外,一切正常。
指令模板:
<ng-form name="nbcardform" ng-submit="submit()" novalidate>
<ng-transclude ng-transclude-slot="back"></ng-transclude>
<div class="row">
<div class="col-xs-12">
<button type="submit">Save</button>
</div>
</div>
</ng-form>
这是 指令用法的示例:
<nb-card>
<nb-card-back>
<input type="text" name="username" ng-model="vm.username" required>
<div ng-messages="nbcardform.username.$error" role="alert">
<div ng-message="required">Required field</div>
</div>
</nb-card-back>
<nb-card>
由于某种原因,表达式 nbcardform.username.$error
未定义。
有人可以帮我解决这个问题吗?
您应该在您的指令中创建一个子表单,因为它的范围(可能?)不同并且它不知道 nbcardform 是什么。
<nb-card ng-form="myDirectiveForm">
<nb-card-back>
<input type="text" name="username" ng-model="vm.username" required>
<div ng-messages="myDirectiveForm.username.$error" role="alert">
<div ng-message="required">Required field</div>
</div>
</nb-card-back>
<nb-card>
这仍然可以很好地连接,在父指令中你可以使用这样的东西:
<ng-form name="nbcardform" ng-submit="submit()" novalidate>
<ng-transclude ng-transclude-slot="back"></ng-transclude>
<div class="row">
<div class="col-xs-12">
<button type="submit">Save</button>
</div>
</div>
{{ nbcardform.$valid }}
{{ nbcardform.myDirectiveForm.$valid }}
{{ nbcardform.myDirectiveForm.username.$valid }}
</ng-form>
你试过了吗:
<div ng-messages="vm.username.$error" role="alert">
嵌入的内容使用外部作用域,除非您在链接函数中为嵌入函数指定了不同的作用域。参见 "Providing your own Transclusion Scope" here。请注意,一旦这样做,您可能无法再引用 vm。
我有一个包含多个包含的 AngularJS 指令,一个包含槽由一个表单包装。
除表单验证消息外,一切正常。
指令模板:
<ng-form name="nbcardform" ng-submit="submit()" novalidate>
<ng-transclude ng-transclude-slot="back"></ng-transclude>
<div class="row">
<div class="col-xs-12">
<button type="submit">Save</button>
</div>
</div>
</ng-form>
这是 指令用法的示例:
<nb-card>
<nb-card-back>
<input type="text" name="username" ng-model="vm.username" required>
<div ng-messages="nbcardform.username.$error" role="alert">
<div ng-message="required">Required field</div>
</div>
</nb-card-back>
<nb-card>
由于某种原因,表达式 nbcardform.username.$error
未定义。
有人可以帮我解决这个问题吗?
您应该在您的指令中创建一个子表单,因为它的范围(可能?)不同并且它不知道 nbcardform 是什么。
<nb-card ng-form="myDirectiveForm">
<nb-card-back>
<input type="text" name="username" ng-model="vm.username" required>
<div ng-messages="myDirectiveForm.username.$error" role="alert">
<div ng-message="required">Required field</div>
</div>
</nb-card-back>
<nb-card>
这仍然可以很好地连接,在父指令中你可以使用这样的东西:
<ng-form name="nbcardform" ng-submit="submit()" novalidate>
<ng-transclude ng-transclude-slot="back"></ng-transclude>
<div class="row">
<div class="col-xs-12">
<button type="submit">Save</button>
</div>
</div>
{{ nbcardform.$valid }}
{{ nbcardform.myDirectiveForm.$valid }}
{{ nbcardform.myDirectiveForm.username.$valid }}
</ng-form>
你试过了吗:
<div ng-messages="vm.username.$error" role="alert">
嵌入的内容使用外部作用域,除非您在链接函数中为嵌入函数指定了不同的作用域。参见 "Providing your own Transclusion Scope" here。请注意,一旦这样做,您可能无法再引用 vm。