jva*_*ans 7 angularjs angularjs-directive angularjs-ng-repeat
我试图理解编译和链接功能之间的区别.在编译器的角度文档中,它说
对于集合中的每个项目,一些指令(例如ng-repeat克隆DOM元素)一次.编译和链接阶段提高了性能,因为克隆模板只需要编译一次,然后为每个克隆实例链接一次.
我查看了源代码,试图了解它是如何工作的,我不知道它如何为每个克隆实例创建一个单独的链接函数.对我来说,看起来编译函数为ng-repeat指令返回一个链接函数.此链接函数确实为ng-repeat中的每个元素创建了一个新范围,但没有为每个克隆实例提供单独的链接函数.
有一两件事,可以是对自己的描述是混淆他们试图内的讨论指令的想法<ng-repeat>,而不是讨论<ng-repeat>本身.
这个想法是,即使你有一个特定的指令的多个实例(例如,因为它们是内<ng-repeat>)为您的应用程序的生命周期执行一次且仅一次编译功能.因此,在此处放置代码的性能优势是它只能运行一次.这也是潜在的问题.应该在编译功能去的唯一的东西是东西是共同的该指令的所有实例.
该链接功能,而另一方面,对于该指令的每个实例执行一次(再次,例如,内<ng-repeat>).
因此,您可以将编译函数视为设置此类型的指令应该是什么的模板,而link函数则设置该指令的实际实例.这就是链接函数传递给它的$ scope和编译没有的原因以及为什么链接函数是更常用的.
有关Angular的一位作者对此的详细讨论,请查看:http: //www.youtube.com/watch?v = WqmeI5fZcho&list = TLWY_LmqLDXW_3QKhTNm1zKa9j40TvPO2O(13:42是Misko地址链接与编译功能的对应点)
| 归档时间: |
|
| 查看次数: |
4748 次 |
| 最近记录: |