Angularjs 使用指令筛选集合
我有三个指令:schoolList(下拉)、groupList(下拉)和searchBar(输入) 有一群学生。可以按学校、组或自定义搜索字符串进行筛选。数据获取逻辑位于控制器内部 从这些指令中筛选此集合的最佳和最干净的方法是什么?如更改学校或组,应向服务器触发一个新请求,并使用其他查询参数进行筛选 现在,我的控制器中有了这个Angularjs 使用指令筛选集合,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有三个指令:schoolList(下拉)、groupList(下拉)和searchBar(输入) 有一群学生。可以按学校、组或自定义搜索字符串进行筛选。数据获取逻辑位于控制器内部 从这些指令中筛选此集合的最佳和最干净的方法是什么?如更改学校或组,应向服务器触发一个新请求,并使用其他查询参数进行筛选 现在,我的控制器中有了这个getUsers()方法,并将其引用传递给每个指令,以便在值发生变化时,这些指令调用该方法,而参数存储在单独的服务ParamStorage中。但不知何故,这感觉不对 删除所
getUsers()
方法,并将其引用传递给每个指令,以便在值发生变化时,这些指令调用该方法,而参数存储在单独的服务ParamStorage
中。但不知何故,这感觉不对
删除所有指令(因为它们又短又简单)并将所有逻辑移到控制器会使其变得庞大且难以管理
谢谢。将您的getUsers()
移动到一些服务/工厂,如:
app.factory('users', ['$http', function ($http) {
var url = 'http://my.domain.api/users/';
return {
filter: function (params) {
return $http.get(url, {...});
}
};
}]);
在控制器中,每当过滤参数改变时,注入工厂和调用函数filter
如果用户总数不多,最好先检索所有用户(存储在缓存中)。每当过滤参数更改时,查询本地缓存,而不是发出新的http请求。每次更改搜索查询时,向服务器发送get请求不是一种好的做法。首先获取所有数据并使用角度过滤器。