我已经读过了 Compilation process, and directive matching 关于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的新手。
谢谢
丹尼尔
答案 0 :(得分:3)
如果我理解正确,您想知道AngularJS如何创建指令以及调用指令方法的次数。
当您创建指令(使用module.directive('myDirective', ...)
)时,您实际上只是创建一个定义。每次使用该指令(如<div my-directive>
)时,AngularJS将运行指南中描述的过程:即,它将编译并链接每个用法。它必须是这种方式,因为指令不是孤立存在的;它不仅存在于调用它的$scope
中,而且还可以使用元素属性和被转换的内容。定义发生一次,但每个实例都被编译和链接。
创建指令后,技术上已完成;如果您没有设置任何$watch
或$observe
或事件绑定,那么您的“指令”现在只是link
函数末尾DOM中的任何内容 - 不再有计算。换句话说,编译和链接后发生的事情完全取决于你。
回到你的例子:如果你在页面上使用200个相同的指令,该指令将被定义一次,但所有200将被单独编译和链接。但我不确定你提出的意思是什么。 背后的问题你的问题是什么?