Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 AngularJS内部指令(post)链接函数在外部指令';s_Javascript_Angularjs - Fatal编程技术网

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系统之外的子元素进行后处理;你最终会得到脆弱的代码