为了在输入表单中提供有关有效性的反馈,我正在使用ng-class
。这些陈述看起来像:
<div ng-class="{ 'has-error': !frmSomeName.vcHeader.$valid && frmSomeName.vcHeader.$dirty }">
<input type="text" name="vcHeader" ng-model="model.someText" ng-minlength="10" required />
</div>
我不喜欢声明的冗长,并且想用类似的东西替换它:
<div validation-state="frmSomeName.vcHeader">
<input type="text" name="vcHeader" ng-model="model.someText" ng-minlength="10" required />
</div>
为了避免必须复制ngClass的行为,我希望指令添加ng-class
指令。
这个plnkr演示了我尝试添加属性的方法,尽管它在最简单的场景中有效,但它有问题,并且不会在翻译(或其他更复杂的指令)中起作用。
我知道它因为滥用编译和链接阶段而无效,但是我不确定如何让它正常工作。因此我的问题是:如何从指令属性中添加不同的指令属性?
答案 0 :(得分:0)
transclude指令中的元素没有接收相同的范围。如果您使用angualr $compile方法并将transclude指令的范围应用于子指令的范围,则它应该起作用。应将以下内容添加到simpleTransclude指令中:
link: function(scope, element) {
$compile( element.contents() )( scope )
}
记得将$ compile传递给指令。
我forked your plnkr并将simpleTransclude范围应用于其内容。