Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 角度指令执行顺序_Javascript_Angularjs - Fatal编程技术网

Javascript 角度指令执行顺序

Javascript 角度指令执行顺序,javascript,angularjs,Javascript,Angularjs,如果我对AngularJS中的一个元素应用了许多指令,它们将以什么顺序执行 例如: <input ng-change='foo()' data-number-formatter></input> 将首先触发数字格式化程序或更改事件。它是确定性的吗?指令的编译顺序直接基于它们的优先级: 从: 当在单个DOM元素上定义了多个指令时, 有时有必要指定指令的顺序 都适用。优先级用于在指令发出之前对指令进行排序 编译函数被调用。优先级定义为一个数字。 首先编译具有更高数字优先

如果我对AngularJS中的一个元素应用了许多指令,它们将以什么顺序执行

例如:

<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实际上我自己也开始写关于优先级的文章,然后我注意到了细节!