Angularjs:无法读取属性';然后';未定义的
我在使用angularjs向web api发出get请求时出错。我可以对此发表任何评论Angularjs:无法读取属性';然后';未定义的,angularjs,asp.net-web-api,Angularjs,Asp.net Web Api,我在使用angularjs向web api发出get请求时出错。我可以对此发表任何评论 $scope.getSelections = function () { var user = ($scope.userInfo.userName).toString(); selectionsaveSrv.getSelections(user).then(function (data) {
$scope.getSelections = function () {
var user = ($scope.userInfo.userName).toString();
selectionsaveSrv.getSelections(user).then(function (data) {
var data = data;
});
}
服务:
function selectionsaveservice(appConfig, $q, fSrv, localStorageService, adalAuthenticationService, $http) {
getSelections = function (user) {
var user = user;
var webApiuri = appConfig.webApiUri + '/UserPreferences/GetSelections';
$http.get(webApiuri, { params: { UserName: user } }).
success(function (data, status, headers, config) {
return data;
}).
error(function (data, status, headers, config) {
});
}
return { getSelections: getSelections }
}根据角度文档。成功和错误方法不再可用。这些方法被折旧,他们建议使用标准的
。然后使用
方法
将服务中的getSelections方法更改如下:
getSelections = function (user) {
var user = user;
var webApiuri = appConfig.webApiUri + '/UserPreferences/GetSelections';
$http.get(webApiuri, { params: { UserName: user } }).
.then(function(response){
if(response.status === 200) {
return response.data;
}
}, function(error) {
console.log(error)
});
}
由于错误明确说明无法读取未定义的属性“then”,因此错误背后的原因是
。then
方法在promise
对象上不可用,您希望从getSelections
方法中获得promise。通过从getSelections
返回承诺,方法应该可以解决您的问题
getSelections = function (user) {
var user = user;
var webApiuri = appConfig.webApiUri + '/UserPreferences/GetSelections';
return $http.get(webApiuri, { params: { UserName: user } });
}
注意:不要使用success
和error
回调,因为它们已被弃用
我认为
success
和error
方法的$http
服务已从1.2.x版中删除。将这些替换为然后方法。这并不能回答问题。。核心问题是getSelections函数没有返回承诺。。