Javascript 角度指令执行顺序
如果我对AngularJS中的一个元素应用了许多指令,它们将以什么顺序执行 例如:Javascript 角度指令执行顺序,javascript,angularjs,Javascript,Angularjs,如果我对AngularJS中的一个元素应用了许多指令,它们将以什么顺序执行 例如: <input ng-change='foo()' data-number-formatter></input> 将首先触发数字格式化程序或更改事件。它是确定性的吗?指令的编译顺序直接基于它们的优先级: 从: 当在单个DOM元素上定义了多个指令时, 有时有必要指定指令的顺序 都适用。优先级用于在指令发出之前对指令进行排序 编译函数被调用。优先级定义为一个数字。 首先编译具有更高数字优先
<input ng-change='foo()' data-number-formatter></input>
将首先触发数字格式化程序或更改事件。它是确定性的吗?指令的编译顺序直接基于它们的
优先级:
从:
当在单个DOM元素上定义了多个指令时,
有时有必要指定指令的顺序
都适用。优先级用于在指令发出之前对指令进行排序
编译函数被调用。优先级定义为一个数字。
首先编译具有更高数字优先级的指令。
前链接功能也按优先级顺序运行,但后链接功能除外
函数按相反的顺序运行。指令的顺序与
相同的优先级未定义。默认优先级为0
报告说:
当在单个DOM元素上定义了多个指令时,
有时有必要指定指令的顺序
都适用。优先级用于在指令发出之前对指令进行排序
编译函数被调用。优先级定义为一个数字。
首先编译具有更高数字优先级的指令。
前链接功能也按优先级顺序运行,但后链接功能除外
函数按相反的顺序运行。指令的顺序与
相同的优先级未定义。默认优先级为0
也
预链接功能:在链接子元素之前执行。
由于编译器链接函数,执行DOM转换不安全
将无法找到用于链接的正确元素
链接后功能:链接子元素后执行。
在post链接函数中进行DOM转换是安全的
(这个问题不是关于优先级设置的,而是关于指令的执行,而不是编译。)
如果number formatter
指令基于标准的$parsers
/$formatters
链,那么我相信顺序保证是首先是格式化程序/解析器,然后是ng change
。即使指定了ng model options=“{updateOn:'change'}”
顺序也保持不变
一把小提琴:(尝试各种ng模型选项并观察控制台)。是基于$parsers
/$formatters
链的numberFormatter
指令(应该是这样的)
),似乎可以公平地假设问题与优先级无关。当然,我读得越多,听起来就越不像了,+1实际上我自己也开始写关于优先级的文章,然后我注意到了细节!