我有一个返回实际数据的服务。但是当我在控制器中调用它时,返回数据结构有点令人困惑。
这是我的工厂:
app.factory("studentService", ['$http','$q','$localstorage','$state',
function($http,$q,$localstorage,$state) {
return{
getStudentsFrom : function(index){
return $http.get(app.baseUrlServer + app.getStudentsUrl + '/getbasedonindex/'+index)
.then(function(response){
if (response.data) {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
},function(response){
// invalid response
return $q.reject(response.data);
});
}
}
}]);
这是我的控制器,称之为
var app_ctrl = angular.module('app.controllers');
app_ctrl.controller('BrowseController',['$scope','$state', 'studentService', '$localstorage',
function($scope,$state, studentService, $localstorage, $timeout) {
$scope.noMoreItemsAvailable = false;
// $scope.NumOfRows=studentService.getNumOfRows();
$scope.students = [];
$scope.counter=1;
console.log(studentService.getStudentsFrom($scope.counter));
}]);
这就是我得到的。
Promise {$$state: Object, then: function, catch: function, finally: function}
$$state: Object
status: 1
value: Array[1]
0: Object
length: 1
__proto__: Array[0]
__proto__: Object
__proto__: Object
问题是,如何访问值?,谢谢
答案 0 :(得分:4)
函数$ http.get返回一个你需要以这种方式使用的承诺:
studentService.getStudentsFrom($scope.counter).then(
function(result) {
console.log(result);
}
);
见https://docs.angularjs.org/api/ng/service/$http 要么 https://docs.angularjs.org/api/ng/service/$q
答案 1 :(得分:0)
在你进一步探索$ http promises和async调用之前,我想你可能需要解决这个问题:
来自var app_ctrl = angular.module('app.controllers');
这个var app_ctrl = angular.module('app.controllers', []);
angularjs docs:“空洞的 angular.module中的数组('myApp',[])。这个数组是列表 myApp所依赖的模块。“