Maby它只是监督它但我无法控制记录值
所以当我记录这个
时console.log($scope.data)
比我回到页面上的控制台
$$state: Object
status: 1
value: Array[11]
0: Object
1: Object
2: Object
3: Object
4: Object
5: Object
6: Object
7: Object
8: Object
9: Object
10: Object
我只想说
console.log($scope.data.value[0])
只给我值中的第一个对象。 但是我只会尝试使用任何不确定的东西。 我错过了什么,我不能单独获得对象的价值。 Maby它是一个有角度的东西,因为$$但我现在有点无能为力。
Here is a screenshot of what I get when I console log the data
更新我的代码如何获取数据:
厂
(function () {
'use strict';
angular
.module('testApp')
.factory('storage', storage);
storage.$inject = ['$http'];
function storage($http) {
return {
getData: getData
};
function getData() {
return $http.get('http://localhost:4040/')
.then(complete)
.catch(failed);
function complete(response) {
var merge = data.teams.map (function (data) {
data.members = response.data.filter (function (person) {
return person.room == data.rooms
});
return data;
});
return merge;
}
function failed(error) {
console.log('getting the data has failed' + error.data);
}
}
}
})();
服务
(function () {
'use strict';
angular
.module('testApp')
.service('testStorage', testStorage);
testStorage.$inject = ['storage'];
function testStorage(storage) {
//Create empty variables
//Data in variables
var allData = storage.getData();
//Return functions
var service = {
getAll: getAll
};
return service;
///////////////////////////
// Create functions here //
///////////////////////////
function getAll() {
return allData;
}
}
})();
并最后我的控制器
(function() {
'use strict';
angular
.module('testApp')
.controller('tryOutController', tryOutController);
tryOutController.$inject = ['$scope', 'testStorage'];
function tryOutController($scope, testStorage) {
$scope.data = {};
$scope.data = testStorage.getAll();
console.log($scope.data);
}
})();
答案 0 :(得分:3)
所以问题是你在填充之前试图访问你的数据。使用适当的承诺功能:
function tryOutController($scope, testStorage) {
$scope.data = {};
testStorage.getAll().then(function(data) {
$scope.data = data;
console.log($scope.data);
});
}
答案 1 :(得分:2)
听起来像是你在对象上面有值之前记录它。在许多浏览器(如Chrome)上,控制台会记录对控件稍后展开的对象的引用。这意味着当您稍后在控制台中展开对象时,您会看到然后的值,而不是记录对象时的值。
因此,如果console.log($scope.data.value[0])
向您显示undefined
,但console.log($scope.data)
会显示value
数组,当您展开它时,它会为其赋值,这意味着它已被填充在记录之后。
但是:看看你的第一个例子,我认为你应该关注$scope.data.$$state.value[0]
,而不是$scope.data.value[0]
。
答案 2 :(得分:-2)
以下代码将" stringify" (转换为字符串表示形式)传递给它的任何对象。因此,在您的情况下,您有一个对象数组,因此这将打印该数组中的第一个。
console.log(JSON.stringify($scope.data.value[0]));
您可以更进一步,使用for循环迭代数组并依次打印每个:
for(var i = 0; i < $scope.data.value.length; i++) {
console.log(JSON.stringify($scope.data.value[0]));
// For spacing...
console.log('---------------------');
}