Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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_Angularjs Directive - Fatal编程技术网

Angularjs 使用指令筛选集合

Angularjs 使用指令筛选集合,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有三个指令:schoolList(下拉)、groupList(下拉)和searchBar(输入) 有一群学生。可以按学校、组或自定义搜索字符串进行筛选。数据获取逻辑位于控制器内部 从这些指令中筛选此集合的最佳和最干净的方法是什么?如更改学校或组,应向服务器触发一个新请求,并使用其他查询参数进行筛选 现在,我的控制器中有了这个getUsers()方法,并将其引用传递给每个指令,以便在值发生变化时,这些指令调用该方法,而参数存储在单独的服务ParamStorage中。但不知何故,这感觉不对 删除所

我有三个指令:schoolList(下拉)、groupList(下拉)和searchBar(输入)

有一群学生。可以按学校、组或自定义搜索字符串进行筛选。数据获取逻辑位于控制器内部

从这些指令中筛选此集合的最佳和最干净的方法是什么?如更改学校或组,应向服务器触发一个新请求,并使用其他查询参数进行筛选

现在,我的控制器中有了这个
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请求不是一种好的做法。首先获取所有数据并使用角度过滤器。