Javascript 从另一个指令动态添加、编译和链接ng类属性
为了对输入表单的有效性提供反馈,我使用了Javascript 从另一个指令动态添加、编译和链接ng类属性,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,为了对输入表单的有效性提供反馈,我使用了ng类。这些语句将类似于: <div ng-class="{ 'has-error': !frmSomeName.vcHeader.$valid && frmSomeName.vcHeader.$dirty }"> <input type="text" name="vcHeader" ng-model="model.someText" ng-minlength="10" required /> </di
ng类
。这些语句将类似于:
<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
指令
这演示了我添加属性的尝试,尽管它在最简单的场景中工作,但它是错误的,不能与转换(或其他更复杂的指令)一起工作
我知道它不起作用,因为编译和链接阶段被误用了,但我不确定如何真正使它正常工作。因此,我的问题是:如何添加与指令属性不同的指令属性?transclude指令中的元素接收的范围不同。如果使用angualr方法并将transclude指令的作用域应用于子指令的作用域,那么它应该可以工作。应将以下内容添加到simpleTransclude指令中:
link: function(scope, element) {
$compile( element.contents() )( scope )
}
记住将$compile传递到指令中
我已经将simpleTransclude范围扩展并应用于它的内容。问题不在于转换<代码>ng transclude处理所有这些。我已经更新了我的,以证明它也不适用于
ng repeat
。此外,您可以看到另一个元素在我的simple transclude
指令中使用。priority
和terminal
属性的问题在于它将您的指令优先于其他指令。在您的示例中,您需要首先运行ng init
指令,否则不会创建变量,因此您的testDirective
必须在其他指令之后运行。我又来了。我已经注释掉了优先级属性,并为编译添加了一个条件,因此它只编译一次。