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);
}
});