我一直在探索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>
答案 0 :(得分:2)
你遇到的问题是绑定
{{ showStatus(d.status) }}
启动每个项目的功能,因为每个项目都会被填充,它只会刷新并再次触发,所有这些项目。
这不是正确设置的地方。
我为你设置了一个改进的小提琴:http://jsfiddle.net/hrr4M/13/
在链接语句中我添加了
onaftersave="showStatus($data)"
这样,你可以在选择一个项目后激活一个函数(参见 onaftersave vs onbeforesave 的文档),你可以使用 $数据强>
现在它已经有效了。问题是,你的绑定仍然使用相同的功能,因此一直在启动。
我复制了该函数并将其重命名为 repeatFiller ,但具有相同的功能,但省略了控制台日志,因此您可以看到它的工作原理。您可能稍微调整一下,但我认为它可以满足您的需求。