如何从在 angularjs 中使用 api 获取数据的工厂获取控制器中的对象数据
How get an object data in controller from a factory that fetch data with api in angularjs
我有一个带有两个函数的控制器,它们都称我为工厂函数:
.controller("Ctrl",function($scope,fetchDataFromServer){
$scope.dataArray = [];
$scope.dataArray2 = [];
$scope.addNew = function () {
fetchDataFromServer.fetchData()
.then(function (data) {
console.log(data);
// $scope.dataArray.push(data);
});
};
$scope.addNew2 = function() {
console.log(fetchDataFromServer.fetchData());
}
})
而且我有一个从 api 获取数据的工厂:
.factory('fetchDataFromServer', function ($http, $q) {
return {
fetchData: function() {
return $http.get('//jsonplaceholder.typicode.com/posts/1')
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function(response) {
// something went wrong
return $q.reject(response.data);
});
}
};
})
console.log
在 add addNew 给我一个对象 :
Object { userId: 1, id: 1, title: "sunt", body: "quia" }
但是我在我的控制器中给出了这个结果:
{…}
"$$state": {…}
status: 1
value: Object { userId: 1, id: 1, title: "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", … }
: Object { … }
: Object { then: then()
, catch: catch(), finally: finally(), … }
任何人都可以为我解释为什么结果不同以及不同的原因是什么?
我的代码在 plunker
在第二个函数中,您正在打印承诺,而您正在打印的第一个函数已解决 value/result 承诺。
$scope.addNew2 = function() {
fetchDataFromServer.fetchData()
.then(function (data) {
console.log(data);
// $scope.dataArray.push(data);
});
}
我有一个带有两个函数的控制器,它们都称我为工厂函数:
.controller("Ctrl",function($scope,fetchDataFromServer){
$scope.dataArray = [];
$scope.dataArray2 = [];
$scope.addNew = function () {
fetchDataFromServer.fetchData()
.then(function (data) {
console.log(data);
// $scope.dataArray.push(data);
});
};
$scope.addNew2 = function() {
console.log(fetchDataFromServer.fetchData());
}
})
而且我有一个从 api 获取数据的工厂:
.factory('fetchDataFromServer', function ($http, $q) {
return {
fetchData: function() {
return $http.get('//jsonplaceholder.typicode.com/posts/1')
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
// invalid response
return $q.reject(response.data);
}
}, function(response) {
// something went wrong
return $q.reject(response.data);
});
}
};
})
console.log
在 add addNew 给我一个对象 :
Object { userId: 1, id: 1, title: "sunt", body: "quia" }
但是我在我的控制器中给出了这个结果:
{…} "$$state": {…} status: 1 value: Object { userId: 1, id: 1, title: "sunt aut facere repellat provident occaecati excepturi optio reprehenderit", … } : Object { … } : Object { then: then() , catch: catch(), finally: finally(), … }
任何人都可以为我解释为什么结果不同以及不同的原因是什么?
我的代码在 plunker
在第二个函数中,您正在打印承诺,而您正在打印的第一个函数已解决 value/result 承诺。
$scope.addNew2 = function() {
fetchDataFromServer.fetchData()
.then(function (data) {
console.log(data);
// $scope.dataArray.push(data);
});
}