为什么angularJS ngInclude的优先级在400执行?

时间:2015-08-28 05:56:17

标签: javascript angularjs angularjs-directive

当我遇到angularJS API指南时,我碰巧看到AngularJS优先级在400处执行。为什么这么具体,我们可以使用" priority属性"?

覆盖此优先级
<ng-include
  src="string"
  [onload="string"]
  [autoscroll="string"]>
</ng-include>

1 个答案:

答案 0 :(得分:2)

因为它是角度设计者认为应该使用其指令的水平。现在,如果你的问题是为什么优先于角度指令定义的原因,那么

  

当在单个DOM元素上定义了多个指令时,   有时需要指定指令的顺序   适用。优先级用于在指令之前对指令进行排序   编译函数被调用。优先级定义为数字。   首先编译具有更高数字优先级的指令。   预链接功能也按优先级顺序运行,但后链接   函数以相反的顺序运行。指令的顺序与   相同的优先级未定义。默认优先级为0。

有关详细信息,请参阅this

如果您希望查看角度核心指令优先级的一般聚合列表,而不是here。也是good读取角度指令之一。

&#34;我们可以使用&#34;优先级属性&#34;?&#34; 覆盖此优先级: 您无法覆盖AngularJS内置指令。但是,您可以定义多个具有相同名称的指令,并针对同一元素执行它们。通过为指令分配适当的优先级,您可以控制指令是在内置指令之前还是之后运行

Angular允许修改指令的优先级以选择一个先于另一个执行。例如,ng-repeat的优先级为1000,实际上高于自定义指令(默认优先级为0)。您可以使用此编号作为指导,了解如何根据指令设置自己的优先级。

  angular.module('x').directive('customPriority', function() {
  return {
    priority: 1001,
    restrict: 'E',
    compile: function () {
        return function () {...}
    }
   }
  })

plunker显示了如何构建在内置ng-click之前执行的ng-click指令。单击链接时,将首先运行自定义ng-click,然后运行内置ng -click确实。