angularjs - 编辑时关闭 angularJS 中的重新排序

标签 angularjs angularjs-ng-repeat

我有一个 AngularJS 应用程序,它在表格中列出了一堆项目。像这样:

<table class='unstyled tmain'>
  <tr>
    <td ng-click='setSort($event)'>X</td>
    <td ng-click='setSort($event)'>Desc</td>
    <td ng-click='setSort($event)'>created</td>
    <td>&nbsp;</td>
  </tr>
  <tr ng-repeat="item in items | orderBy:itemNormalizationFunction:sortReverse">
    <td><input type='checkbox' ng-model='item.done'
             ng-click='onCheckedChanged(item)'/></td>
    <td><div edit-in-place="item.text"
             on-save="updateItemText(value,previousValue,item)"></div></td>
    <td><span class='foo'>{{item.created | dateFormatter}}</span></td>
  </tr>
</table>

表格标题可单击以设置排序顺序。每个数据行中第二列中的单元格是可“就地”编辑的 - 如果您单击文本,它将被输入文本框替换,并且用户可以编辑文本。我有一个小指令可以实现这一点。这一切都有效。

编辑时出现问题。假设我将它设置为按“描述”(第二列)排序。然后,如果我编辑描述(通过就地编辑指令),当我在输入框中输入时,排序顺序会发生变化。如果我更改前几个字符,则 angular 会重新排序并且该项目不再位于我的光标下。它甚至也不是重点。我必须在列表中搜索以找出它重新排序的位置,然后我才能重新集中注意力并继续打字。

这有点蹩脚。

我想要做的是告诉 angular (a) 在我键入输入框时停止重新排序,或 (b) 对单独的(未显示的)索引值进行排序,在编辑开始之前保留排序.但我不知道如何做到这两点。谁能给我一个提示?

我知道这有点复杂,所以我会尝试组合一个 plunkr 来展示发生了什么。

最佳答案

这是显示我如何解决问题的 plunkr。

http://embed.plnkr.co/eBbjOqNly2QFKkmz9EIh/preview

关于angularjs - 编辑时关闭 angularJS 中的重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17580411/

相关文章:

angularjs - 使用 ng-Style 更改背景颜色

javascript - 从angularjs的过滤器中排序嵌套数组(2D数组)数组

angularjs - ng-if,不等于?

javascript - Angular ng-repeat 无法正确渲染数据

javascript - 更改 ng-repeat Angular 内单个项目的值

angularjs - ng-readonly 在 Angular 复选框中不起作用

angularjs - Angular 视差 - jquery 到 Angular

javascript - getTimezoneOffset() 在夏令时转换期间稳定吗?

javascript - 在完整日历中,如何按住弹出框直到鼠标移开?

javascript - AngularJS 客户端验证 : Changing validation requirements depending on other fields?