Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 编辑用于排序的表字段_Angularjs_Sorting_Focus - Fatal编程技术网

Angularjs 编辑用于排序的表字段

Angularjs 编辑用于排序的表字段,angularjs,sorting,focus,Angularjs,Sorting,Focus,我有一个实体表,如 <tr ng-repeat="e in entities"> <td ng-repeat="c in columns" ng-switch="e.type"> <span ng-switch-when="text" ng-model="e[c.name]"></span> <input ng-switch-when="input" ng-model="e[c.name]"

我有一个实体表,如

<tr ng-repeat="e in entities">
    <td ng-repeat="c in columns" ng-switch="e.type">
         <span ng-switch-when="text" ng-model="e[c.name]"></span>
         <input ng-switch-when="input" ng-model="e[c.name]"
              ngfocus=... ng-blur=... />
    </td>
</tr>

i、 例如,每行显示一个实体,列与其属性相对应,表示形式取决于列类型

如果
c.type==“input”
,则会显示一个输入框。实体可以根据任何列进行排序,这种排序会自动进行,当所选列可编辑时,会出现“我的问题”。当值更改时,行将被重新排序,这对于用户来说非常混乱


当一个输入字段被聚焦时,我可以抑制排序,但问题是事实上总是如此(因为几乎没有任何其他聚焦字段)。我想知道是否有更好的解决方案。

是的,如果使用内联编辑,就会出现这种情况。我们也在努力解决这个问题。我们现在创造了不同的解决方案。在您的情况下,
ng blur
应该可以正常工作(但我不知道您的全部应用要求)。所以你可以让它像这样工作,按年龄排列数据

看法
一种解决方案可以是仅在最初对实体进行排序,或者如果用户决定对实体进行排序,例如单击列标题或其他类似操作。也就是说,不要自动排序。当输入失去焦点时如何排序?有任何反馈或建议吗?Maartinus?@lin抱歉,我还没有时间做这件事。我完全肯定,我需要解决这个问题;我读过并喜欢你的回答,但目前还有更紧迫的问题。我会在一两个星期后再谈这件事
<div ng-controller="MyCtrl">
  <div ng-repeat="item in data">
     <input type="text" ng-model="item.name" ng-blur="order()">
     <input type="number" ng-model="item.age" ng-blur="order()">
  </div>
</div>
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($scope, $filter) {
    $scope.data = [{
      name: 'Frank',
      age: 28
    },{
      name: 'Peter',
      age: 32
    },{
      name: 'Garry',
      age: 18
    },{
      name: 'Basti',
      age: 24
    },{
      name: 'David',
      age: 102
    },{
      name: 'Magrete',
      age: 76
    },{
      name: 'Sven',
      age: 12
    }];

    $scope.order = function () {
      $scope.data = $filter('orderBy')($scope.data, 'age', true);
    }
});