我们正在为相当大的应用程序开发CRUD模式。我们用于定义一对多关系的一种常见UI模式,其中记录通过复选框关联。挑战是通过刷新记录列表(和关联的ng-模型)的异步调用(搜索/排序)来保持选择(选中/取消选中)。我想听听更高级的AngularJS用户(我是菜鸟)什么被认为是最佳做法?任何反馈都表示赞赏!
修改
Here's a working plunk显示我最有可能通过目前对Angular的理解解决这个问题。如果你有更好的方法,请告诉我!
答案 0 :(得分:2)
我认为你可以维护一个单独的选定名称集合。因此,下次过滤列表时,您只需要在集合中查找以保持项目的选择。你可以通过在控制器中绑定一些变量(arrSelected)来做,也可以创建一个单独的服务。
答案 1 :(得分:2)
您是否考虑使用过滤器而不是重新获取。当然,这实际上取决于您计划拥有多少项目,但我已经成功过滤了一个嵌套的JSON对象,大约有5000个项目。
以下是完整的plunker:http://plnkr.co/edit/l4jYgt0LjRoP2H0YuTIT?p=preview
亮点: 在 index.html 中重复添加|过滤
<tr ng-repeat="user in users | filter:userFilter">
在 script.js 中,我们添加了filter函数和$ scope变量来保存已过滤的字母:
$scope.filteredLetter
$scope.userFilter = function (elem) {
if (elem.name.lastIndexOf($scope.filteredLetter, 0) === 0 || $scope.filteredLetter == '') {
return true;
} else {
return false
}
}
作为奖励,我在ng-class中添加了以显示哪个字母突出显示。
非常简单的代码,但即使人们改变了事情,这也会给你完全的持久性。您甚至可以立即尝试添加带有 ng-model 绑定的<input>
标记,以表示 $ scope.filteredName 。然后,您需要做的就是将JS添加到过滤器中,以对名称的一部分进行更深层次的过滤。