如何在一个预先选择中调用两个api

时间:2017-07-05 18:46:00

标签: angularjs

我正在使用有角度的类型: -

<label>USER</label>
     <input type="text" name="user" ng-model="a.user" autocomplete="off" typeahead="a for a in getAllUsers($viewValue);getAllStaffs($viewValue)" typeahead-loading="loadingCodes" typeahead-no-results="noResults">

我的指令代码: -

scope.getAllUsers = function(key) {
    var obj = {
        "key": key
    }
    if (key.length >= 2) {
        return ApiServices.getAllUsers(obj).then(function(response) {
            return response.data.map(function(item) {
                return item;
            });
        });
    } else {
        return false;
    }
};

scope.getAllStaffs = function(key) {
    var obj = {
        "key": key
    }
    if (key.length >= 2) {
        return ApiServices.getAllStaffs(obj).then(function(response) {
            return response.data.map(function(item) {
                return item;
            });
        });
    } else {
        return false;
    }
};

有两个功能: - 一个用于获取用户名,一个用于获取员工姓名。我希望这两个函数都能调用相同的输入。 但是预先输入的只是工作人员名单。有没有办法让两个列表都填入相同的输入。

1 个答案:

答案 0 :(得分:1)

定义一个新函数,同时执行两个请求并合并结果。

scope.getAllNames = function(key) {
    var obj = {
        "key": key
    }

    function extract(resp) {
        return resp.data.slice(0)
    }
    if (key.length >= 2) {
        return Promise.all([
          ApiServices.getAllUsers(obj).then(extract), 
          ApiServices.getAllStaffs(obj).then(extract)
        ])
        .then(function(results) {
            return [].concat.apply([], results) 
        });
    } else {
        return false;
    }

}