为什么我需要一个范围。$申请编译指令的范围以绑定到它的模板?
相关的plunker在这里: http://plnkr.co/edit/t3zF1A0BviItmbx9J7ii?p=preview
答案 0 :(得分:2)
并不是scope.$apply
上需要myDirective
,而是你使用jQuery / jqLite函数(append
)添加新指令而Angular不知道它需要启动另一个消化周期。
请在此处查看我的更改,其中我移动了scope.$apply
以涵盖第一个指令中的append
方法,结果是相同的:
答案 1 :(得分:0)
有两件事:
在角度环境中发生了事件,您不需要应用这些更改,因为Angular会自动触发摘要周期,然后应用更改。
当您从Angularjs的环境外部进行一些更改时,在这种情况下,需要明确告知angular已发生更改。因此我们写,$scope.$apply();
即使在指令中,如果使用角度函数进行更改,也不需要应用。但是如果您使用其他库来引发事件,则需要应用更改。