为什么AngularJS在模型改变时重新触发自定义指令的“链接”功能?

时间:2014-10-06 18:24:17

标签: angularjs angularjs-directive

Plunker: http://plnkr.co/edit/01BRRI?p=preview

目的:构建一个编辑数据并保存回控制器范围的指令。

代码说明:

$ scope.object是控制器中的数据,我在指令中使用' ='在隔离范围定义中。我想在指令中编辑它并将其保存回控制器。

问题:

任何值更改后输入字段都会模糊。在控制台中,您可以找到“#”链接'模型值更改后重新触发函数。 (当model =" object.meta [key] [index]"在第41行)。

如果您注释掉第40,42行并将第41行编辑为:<editable model="object.meta[key][0]"></editable>

然后一切正常(1.重新触发链接功能.2。模型更改后输入不模糊.3。控制器$ scope.object更新。)

我需要为我的数据结构嵌套循环,我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

输入模糊,因为每次更新模型ng-repeater重新渲染DOM时。 要证明这一点,请参阅该示例http://plnkr.co/edit/THJd8z?p=preview 我已经使用了angular 1.3来支持futers Bind Once更多信息,你可以在这里找到http://swirlycheetah.com/native-bind-once-in-angularjs-1-3/

 <section ng-controller="TestCtrl">
    <div ng-repeat="(key, values) in ::object.meta">
      <div ng-repeat="(index, value) in ::values">
        <editable model="object.meta[key][index]"></editable>
      </div>
    </div>
    {{object}}
  </section>