Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从另一个指令动态添加、编译和链接ng类属性_Javascript_Angularjs_Angularjs Directive - Fatal编程技术网

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
必须在其他指令之后运行。我又来了。我已经注释掉了优先级属性,并为编译添加了一个条件,因此它只编译一次。