如何控制日志记录此对象

时间:2015-12-08 09:24:21

标签: javascript angularjs

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);

}
})();

3 个答案:

答案 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('---------------------');
}