使用指令过滤集合

时间:2015-09-22 07:34:40

标签: angularjs angularjs-directive

我有三个指令:schoolList(下拉列表),groupList(下拉列表)和searchBar(输入)。

有一批学生。它可以按学校,组或自定义搜索字符串进行过滤。数据获取逻辑位于控制器内部。

从这些指令过滤这个集合的最佳和最干净的方法是什么?就像更改学校或小组一样,应该向服务器发出一个新请求,并附加用于过滤的查询参数。

现在我在我的控制器中有这个getUsers()方法,并将它的引用传递给每个指令,以便在值更改时这些指令调用该方法,而params存储在单独的服务ParamStorage中。但不知怎的,这感觉不对......

删除所有指令(因为它们简短而简单)并将所有逻辑移动到控制器会使其变得庞大且难以管理。

谢谢。

1 个答案:

答案 0 :(得分:1)

将您的getUsers()移至某个服务/工厂,例如:

app.factory('users', ['$http', function ($http) {
    var url = 'http://my.domain.api/users/';
    return {
        filter: function (params) {
            return $http.get(url, {...});
        }
    };
}]);

在控制器中,只要更改过滤参数,就注入工厂并调用函数filter

如果您的用户总数不多,您最好先检索所有用户(存储在缓存中)。每当过滤参数发生变化时,查询本地缓存而不是发出新的http请求。