角度异步http自动完成

时间:2015-04-09 09:55:34

标签: javascript ajax angularjs autocomplete

我想用Angular创建一个自动完成功能,因为这是我第一次使用角度接触,我非常坚持。

这是我的代码:

 MenuService.getAutocompleteData(term).then(function (response) {
            $scope.menuData = response.data;
        });

这就是我调用正在进行以下http调用的服务的方式:

return $http({
            url    : autocompletePath,
            method : "POST",
            data   : {
                term: term
            }
        }).success(function (response) {
            return response;
        });

问题是它似乎是同步的,当我输入快速字母时,我的浏览器会冻结。我看到它是关于“.then”的承诺,但我不确定如何解决它。任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:0)

您执行HTTP请求,这是正确的,但您尝试在成功时返回结果。相反,你应该尝试在成功处理程序中完成需要做的事情。

所以在你的服务中你会做这样的事情:

    return $http({
        url    : autocompletePath,
        method : "POST",
        data   : {
            term: term
        }
    }); //note that there is no success handler in your service, because what's supposed to happen when the request completes, is the controller's business, not the service's. The service should only know where to get the data

您可以将控制器更改为:

  MenuService.getAutocompleteData(term).success(function (response) {
        $scope.menuData = response.data;
    }); //note the success-handler

答案 1 :(得分:0)