在ngrepeat中动态添加指令时的奇怪行为

时间:2016-01-13 11:20:56

标签: angularjs angularjs-directive angularjs-scope angularjs-ng-repeat angular-directive

我正在尝试在ngrepeat中动态添加指令。请参阅以下小提琴链接:Fiddle Link

代码:

{{1}}

不幸的是,每个指令都加了3次。任何人都可以解释确切的行为吗?

1 个答案:

答案 0 :(得分:0)

这很简单。添加到模板的每个函数将运行至少两次,因为$digest循环运行两次 - 第一次在模型更改后,第二次检查第一个循环是否更改了任何模型

因此,每当有loadDynamicDir时,您的函数$digest就会运行,并且每次创建更多节点时都会附加html

我已经向您的plunker添加了按钮,显示了行为

https://plnkr.co/edit/4hpVDOPJm2BMzSwRcm5N?p=preview

<body ng-app="myApp">
  <my-dir></my-dir>
  <button ng-click="$digest()">do digest</button>
</body>