Angular Material: 自动完成在没有 $resource 响应缓存的情况下无法工作

Angular Material: autocomplete not working without cache with $resource response

所以这基本上就是问题所说的,我有一个函数 returns 来自 $resource 的响应从服务器获取。

var user = $resource(apiHost + '/users/:action/:query', {query: '@query'}, {
    search: {
        method: 'GET',
        isArray: true,
        params: {
            action: 'search',
            query: '@query'
        }
    }
});
self.search = function(name){
    return user.search({query: name}, function(result){
        return result;
    });
}

这些功能都在一个服务里面,我说这些只是为了澄清一些困惑

现在,在控制器中,我正在调用服务功能

$scope.searchUser = function(name){
    return userService.search(name);
};

看起来很简单,但我不得不承认到目前为止我没有发现任何问题。

现在在 html 中呈现 autocomplete

<md-autocomplete md-no-cache="true" md-search-text="searchText" md-selected-item="selectedItem" md-items="user in searchUser(searchText)" md-item-text="user.name">
    <span md-highlight-text="searchText">{{user.name}}</span>
</md-autocomplete>

现在从这里开始。我不确定问题是否来自这里。但是当我在 autocomplete 中输入内容时,没有任何显示.. 我一直在确保服务器收到我需要发出的请求。

我试过不使用 md-no-cache 属性,效果有点不同。输入一些文本时。什么都没有显示。但是当部分文本被删除时,autocomplete 显示结果。

您尝试 return 在 searchUser() 函数中调用 ngResource 的承诺:

$scope.searchUser = function(name){
    return userService.search(name).$promise;
};