为什么会发生在x-editable + ng-repeat中

时间:2014-05-05 17:33:00

标签: angularjs-ng-repeat x-editable

我一直在探索Angular X-editable项目一段时间,并遇到了这种奇怪的行为。

每当我点击3个'select'组件中的任何一个并尝试从下拉列表中更改值时,方法'showStatus(..)'也会被触发到ng-repeat边界内的其他组件。 (您可以通过控制台查看。)

你能告诉我为什么会这样吗?我错过了什么......?

编辑链接 - >小提琴:http://jsfiddle.net/hrr4M/4/

<span  ng-repeat="d in list" >
  <a href="#" editable-select="d.status" e-ng-options="s.value as s.text for s in statuses">

       {{ showStatus(d.status) }}

  </a> <br/>
</span>

1 个答案:

答案 0 :(得分:2)

你遇到的问题是绑定

{{ showStatus(d.status) }}

启动每个项目的功能,因为每个项目都会被填充,它只会刷新并再次触发,所有这些项目。

这不是正确设置的地方。

我为你设置了一个改进的小提琴:http://jsfiddle.net/hrr4M/13/

在链接语句中我添加了

onaftersave="showStatus($data)"

这样,你可以在选择一个项目后激活一个函数(参见 onaftersave vs onbeforesave 的文档),你可以使用 $数据

现在它已经有效了。问题是,你的绑定仍然使用相同的功能,因此一直在启动。

我复制了该函数并将其重命名为 repeatFiller ,但具有相同的功能,但省略了控制台日志,因此您可以看到它的工作原理。您可能稍微调整一下,但我认为它可以满足您的需求。