Javascript AngularJS内部指令(post)链接函数在外部指令';s
我理解在指令中链接的工作方式是,后链接函数以相反的顺序调用。也就是说,在外部元素之前调用最内部元素的“指令”后链接函数。网上有很多劫掠者在展示这种行为 也就是说,我不理解我在这方面看到的行为。外部链接函数是首先被调用的函数。如果我在内部指令中不使用Javascript AngularJS内部指令(post)链接函数在外部指令';s,javascript,angularjs,Javascript,Angularjs,我理解在指令中链接的工作方式是,后链接函数以相反的顺序调用。也就是说,在外部元素之前调用最内部元素的“指令”后链接函数。网上有很多劫掠者在展示这种行为 也就是说,我不理解我在这方面看到的行为。外部链接函数是首先被调用的函数。如果我在内部指令中不使用templateURl,行为就会发生变化,这会使事情变得更加奇怪 有人能解释一下吗 编辑 我发现他问了同样的问题。根据答案(来自文档): templateUrl-与模板相同,但模板是从指定的URL加载的。由于模板加载是异步的,因此编译/链接将挂起,直到
templateURl
,行为就会发生变化,这会使事情变得更加奇怪
有人能解释一下吗
编辑
我发现他问了同样的问题。根据答案(来自文档):
templateUrl-与模板相同,但模板是从指定的URL加载的。由于模板加载是异步的,因此编译/链接将挂起,直到加载模板为止
线程中添加了一个评论员:
如果您有相互依赖的指令,则不能指望执行顺序。您将需要更改设计以在框架的约束范围内工作。如果你更新你的文章,提供更多关于你真正想要完成的事情的细节,我们可能会帮助你重新设计你的指令
好了,就这样
我的具体情况
我正在尝试为我的应用程序编写可重用的表单组件。它使用语义UI,因此每个输入字段都有一些样式化的样板元素,特别是下拉选择。这是我的下拉模板,用于说明为什么我更愿意编写自定义元素指令:
<div class="field">
<label class="label">{{label}}</label>
<div class="input">
<div class="ui selection fluid dropdown">
<i class="ui dropdown icon"></i>
<div class="default text">{{default}}</div>
<div class="menu">
<div class="item" ng-repeat="item in collection" data-value="{{item[value]}}">
{{item[identifier]}}
</div>
</div>
<input name="{{name}}" type="hidden" ng-required='{{required}}'/>
</div>
</div>
</div>
{{label}}
{{default}}
{{item[identifier]}
这样我就可以写一些不那么冗长的东西了。这一切都很好。然而,在我的一些表单(如果不是所有表单的话)中,我希望在blur上添加验证,因此我为表单编写了一个指令,查找所有输入字段,在更改时添加回调,如果无效,则添加错误类。这将不起作用,因为在表单指令的链接时没有输入字段,因为内部指令尚未编译和链接
最终的html将如下所示:
<form error-directive>
<choice name="myInput" label="MyLabel" default="Select an Item" collection="data" value="id" identifier="text" ng-model="myModel" required="true"></choice>
</form>
有更好的方法吗
但是,在我的一些表单(如果不是所有表单)中,我希望在blur上添加验证,因此我为表单编写了一个指令,查找所有输入字段,在更改时添加回调,如果无效,则添加错误类。这将不起作用,因为在表单指令的链接时,由于内部指令尚未编译和链接,因此没有输入字段
粗体部分支持AngularJS,您不需要自定义解决方案
有更好的方法吗
是的,还有
如果出于其他原因,需要在表单中收集所有输入。不要使用DOM对AngularJS系统之外的子元素进行后处理;你最终会得到脆弱的代码