Angularjs 无法读取属性';然后';自动完成时未定义的

Angularjs 无法读取属性';然后';自动完成时未定义的,angularjs,Angularjs,我得到一个错误,说: TypeError: Cannot read property 'then' of undefined* on angularjs 控制器: function querySearch (query) { $http ({ method: 'GET', url: 'autocomplete/?search=' + query }).then(function successCallback(response) {

我得到一个错误,说:

TypeError: Cannot read property 'then' of undefined* on angularjs
控制器:

function querySearch (query) {
    $http ({
        method: 'GET',
        url: 'autocomplete/?search=' + query
        }).then(function successCallback(response) {
            return response.data
        })
}
html文件:

<md-autocomplete md-input-name="autocompleteField" md-selected-item="row.items" md-search-text="searchText" md-items="item in querySearch(searchText)" md-item-text="item.display" md-require-match="">
    <md-item-template>
        <span md-highlight-text="searchText">{{item.category}}</span>
    </md-item-template>
</md-autocomplete>

{{item.category}

您可能没有在控制器中注入$http,请执行以下操作:

.controller($scope, $http){ /* your code */ }

您还需要首先填充一些数组
$scope.items=response.data
,在您执行
ng repeat
或至少返回一个承诺
返回$http()。然后()
,因为否则您的数据将不会绑定到ng repeat,因为它是异步的

您可能没有在控制器中注入$http,请执行以下操作:

.controller($scope, $http){ /* your code */ }

您还需要首先填充一些数组
$scope.items=response.data
,因为否则数据将不会绑定到ng repeat,因为它是异步的

正确的代码格式,并从标题中删除了冗余的标记名。正确的代码格式,并从标题中删除多余的标记名。我已在控制器中注入$http。你能解释一下
return$http().then()
?你不会在任何地方返回
response.data
,除非你返回一个承诺并用
then
解决它(即
return$http(url)。然后((res)=>{return res.data}
),稍后通过填充一些$scope变量,你将在
ng repeat
中使用,或者,只需创建一个列表并立即填充到
querySearch
函数中,而不返回任何内容。通常,您会有一些服务/工厂来解析任何逻辑,但控制器可以很好地完成这项工作,但返回值没有意义,这与我在控制器中注入$http的服务案例不同。你能解释一下
return$http().then()
?你不会在任何地方返回
response.data
,除非你返回一个承诺并用
then
解决它(即
return$http(url)。然后((res)=>{return res.data}
),稍后通过填充一些$scope变量,你将在
ng repeat
中使用,或者,只需创建一个列表并立即填充到
querySearch
函数中,而不返回任何内容。通常,您会有一些服务/工厂来解析任何逻辑,但是控制器可以很好地完成这项工作,但是返回值与服务案例不同是没有意义的