0

我已经阅读了 AngularJS Doc 上的编译过程和指令匹配。

但我真的不明白这些指令。

例子:

我有静态html:

<div class="test test2" cid="549" sid="a5e3c4f8a9">text-text-text</div>

当我手动执行此操作时,我知道它只会在浏览器解析时创建和调用一次。

但是当我创建一个具有相同 dom 元素的指令时会发生什么?

<x my-directive>text-text-text</x>

这是一样的效果吗?

我在问这样一个新手问题,因为我在我的 html 页面上使用了 200 多个元素。如果我将它们更改为单个指令:肯定会更容易管理它们。

如果它只是在浏览器的编译时很慢,但在运行时发生了什么,这没问题?

我很抱歉,如果 qustion 不够专业。我只是 Stackoverflow 的新手。

谢谢你

丹尼尔

4

1 回答 1

3

如果我理解正确,您想知道 AngularJS 如何创建指令以及调用指令方法的次数。

当您创建一个指令(使用module.directive('myDirective', ...))时,您实际上只是在创建一个定义。每次使用该指令(如<div my-directive>)时,AngularJS 都会运行指南中描述的过程:也就是说,它将编译和链接每次使用。必须这样,因为指令不是孤立存在的;它不仅存在$scope于它被调用的地方,而且它还可以利用元素属性和嵌入的内容。定义发生一次,但每个实例都被编译和链接。

一旦创建了指令,它在技术上就完成了;如果您不设置任何$watch$observe或事件绑定,那么您的“指令”现在就是函数末尾 DOM 中link的任何内容 - 不再需要计算。换句话说,编译和链接之后会发生什么完全取决于您。

回到您的示例:如果您在页面上使用 200 个相同的指令,该指令将被定义一次,但所有 200 个将单独编译和链接。但我不确定你问的意思是什么。你的问题背后的问题是什么?

于 2013-03-13T22:05:25.333 回答