嵌套和重复angularjs指令中链接函数的调用顺序
我对Javascript编程相当陌生,只接触过AngularJS。为了评估它,我决定写一个简单的note应用程序。该模型非常简单,是一个注释列表,其中每个注释都有一个标签、一个文本和一个标记列表。然而,我在嵌套指令的独立作用域之间传递数据时遇到了问题 我有三个指令,notes、note和tagger(用相同的名称定义新元素)。它们中的每一个都使用一个独立的作用域 notes指令使用ng repeat使用note元素“呈现”其每个注释 note指令使用tagger元素“呈现”标记列表 note指令定义作用域:{getNote:&“,…},以便将note实例从note列表传递给note控制器/指令。getNote(index)函数在note指令的link函数中调用。这个很好用 tagger指令定义作用域:{getTags:&“,…},以便将给定注释的标记列表传递给tagger控制器/指令。在tagger指令的link函数中调用getTags函数。这不行 据我所知,问题在于指令的链接函数的调用顺序不一致。调试应用程序表明,按以下顺序调用链接函数:嵌套和重复angularjs指令中链接函数的调用顺序,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-repeat,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Repeat,我对Javascript编程相当陌生,只接触过AngularJS。为了评估它,我决定写一个简单的note应用程序。该模型非常简单,是一个注释列表,其中每个注释都有一个标签、一个文本和一个标记列表。然而,我在嵌套指令的独立作用域之间传递数据时遇到了问题 我有三个指令,notes、note和tagger(用相同的名称定义新元素)。它们中的每一个都使用一个独立的作用域 notes指令使用ng repeat使用note元素“呈现”其每个注释 note指令使用tagger元素“呈现”标记列表 note指令
就单个元素而言,链接函数的顺序由编译函数的顺序决定,而编译函数的顺序又根据指令定义对象的
优先级
属性进行排序
资料来源:
在具有转换的多个元素上:内部指令在外部指令之前求值。原因:转换的本质
在具有同级的多个元素上:按从上到下的顺序执行。原因:解析$compile的逻辑 引用Josh D.Miller的话,他友好地回答了我的一个类似问题: “只需几条技术说明。假设您有以下标记:
<div directive1>
<div directive2>
<!-- ... -->
</div>
</div>
现在AngularJS将通过按特定顺序运行指令函数来创建指令:
指令1:编译
指令2:编译
指令1:控制器
指示1:预链接
指令2:控制器
方向2:预链接
方向2:发布链接
方向1:发布链接
默认情况下,一个直接的“链接”函数是一个post链接,因此在运行内部Direct2的链接函数之前,外部Direct1的链接函数不会运行。这就是为什么我们说在post链接中进行DOM操作是安全的。”Hi@basarat,感谢您花时间回答!然而,我没有把你的答案应用到我的问题上。我在同一个元素上没有多个指令。我不使用转换。我的笔记元素当然是兄弟姐妹,但我不知道你的意思。也许这很明显,但我仍然不理解我的Plunker示例中链接函数的调用顺序。感谢您的回答。也许我很愚蠢,但正如在我的plunker中看到的,我有:但是调用顺序的链接函数是。。。然而,根据你的回答,你会期待。。。抱歉,如果我太蠢了:-)我倾向于认为这是一个混合体,因为不仅ng repeat以优先级=1000执行(而且您有嵌套的ng repeat语句)。但是您似乎没有使用transclude选项,所以我不太确定嵌入指令的编译顺序。这是一篇非常全面的文章,介绍如何在嵌套指令上使用前链接/后链接。