【问题标题】:Why does angularJS ngInclude's priority executes at 400?为什么 angularJS ngInclude 的优先级执行为 400?
【发布时间】:2015-08-28 05:56:16
【问题描述】:

当我遇到 angularJS API 指南时,我碰巧看到 AngularJS 优先级在 400 处执行。为什么这么具体,我们可以使用“priority Attribute”覆盖这个优先级吗?

<ng-include
  src="string"
  [onload="string"]
  [autoscroll="string"]>
</ng-include>

【问题讨论】:

  • 您需要更改优先级的具体场景是什么?而且我不确定您所说的“如此具体”是什么意思 - Angular 不支持优先级范围,所以任何数字都是“具体的”
  • Angular 确实支持优先级,请检查-stackoverflow.com/questions/19270392/…
  • 是的,我知道...但是任何优先级都将因此“特定于”某个数字
  • 请检查 ngInclude 的 API。优先级设置为 400。这是特定的。我只是想明白。 docs.angularjs.org/api/ng/directive/ngInclude
  • 您为什么不直接告诉我们您需要更改优先级的场景是什么?

标签: javascript angularjs angularjs-directive


【解决方案1】:

因为这是角度设计师认为应该使用他们的指令的级别。现在如果你的问题是为什么优先级定义在角度指令之上而不是原因

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

更多信息请参见this

如果您想查看 Angular 核心指令优先级的一般聚合列表而不是 here 它是。也是在角度指令上读取的good 之一。

“我们可以使用“priority Attribute”覆盖这个优先级吗?”: 你不能覆盖 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可以。

【讨论】:

  • 谢谢你,这就是我要找的:)
  • np。如果您觉得它对您有帮助,您能否也将答案标记为已接受。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-15
  • 1970-01-01
  • 2021-10-19
  • 1970-01-01
  • 2014-01-17
相关资源
最近更新 更多