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
函数中,而不返回任何内容。通常,您会有一些服务/工厂来解析任何逻辑,但是控制器可以很好地完成这项工作,但是返回值与服务案例不同是没有意义的