Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular.js在控制器中渲染数据_Javascript_Json_Angularjs - Fatal编程技术网

Javascript Angular.js在控制器中渲染数据

Javascript Angular.js在控制器中渲染数据,javascript,json,angularjs,Javascript,Json,Angularjs,我有一个相当简单的问题。我有一个简单的控制器和它的$scope.coords=[];以HTML格式呈现JSON: [24.43359375, 54.6611237221] [25.2905273438, 54.6738309659] [25.3344726562, 54.6102549816] [25.2685546875, 54.6801830971] [25.2960205078, 54.6611237221] 如何不在html中呈现JSON,而是在控制器本身中呈现JSON?代码看起来是

我有一个相当简单的问题。我有一个简单的控制器和它的$scope.coords=[];以HTML格式呈现JSON:

[24.43359375, 54.6611237221]
[25.2905273438, 54.6738309659]
[25.3344726562, 54.6102549816]
[25.2685546875, 54.6801830971]
[25.2960205078, 54.6611237221] 
如何不在html中呈现JSON,而是在控制器本身中呈现JSON?代码看起来是这样的。请参见代码中的注释:

propertyModule.controller('propertyController', ['$scope', 'Property', function ($scope, Property) {

        // Query returns an array of objects, MyModel.objects.all() by default
        $scope.properties = Property.query();

        // Getting a single object
        $scope.property = Property.get({pk: 1});

        $scope.coords  = [];

        $scope.properties = Property.query({}, function(data){

        console.log(data);

        angular.forEach(data , function(value){

            $scope.coords.push(value.coordinates);

        });

        });

        $scope.positions =  //$Resource('realestate.property').items();

        [

        [54.6833, 25.2833], [54.67833, 25.3033] // those coordinates are hardcoded now, I want them to be rendered here by $scope.coords


        ];


    }]);

首先,您向我们展示的是一组数组,而不是JSON文档。但是,由于您的代码似乎正在工作,我将假设您确实有一个有效的JSON可以使用

你需要考虑以下事实:你在这里发出异步请求:

$scope.properties = Property.query({}, function(data) {

    console.log(data);

    angular.forEach(data , function(value){
        $scope.coords.push(value.coordinates);
    });

});
这意味着您将无法在任何数据到达之前从$scope.coords获取数据

有几种方法可以解决这个问题:

  • 您只需在循环中提取数据即可:

    angular.forEach(data , function(value) {
        $scope.coords.push(value.coordinates);
        if('your condition') {
            $scope.positions.push(value.coordinates);
        }    
    });
    
  • 你可以用一个承诺,看看这个

  • 或者您可以通过$scope.coords和$scope.watch观看


我不清楚你想要什么。控制器不是可用于显示值的控制台。现在,如果您想访问
$scope.coords
中的内容,可以使用类似
angular.forEach($scope.coords,function(坐标){console.log(坐标);})很抱歉,我刚刚回复。。。我将以另一种方式写入:)你看,我希望$scope.positions从$scope.coords获取数据(正如你从代码中看到的,$scope.coords将包含JSON),因此我不需要将这些coords硬编码到$scope.positions中。。。