繁体   English   中英

如何使用angularjs从json文件中获取数据

[英]how to get data from json file using angularjs

我正在从json文件中获取数据以显示在表中,但是只有第一次,我下次才从getdata()获取数据,出现以下错误:未捕获的TypeError:无法读取未定义Controller.js的属性“ length”:95

$ http返回值很好,我第一次从json文件中获取了所有数据,下次我无法从getdata()中获取数据。 getData()函数无法正常工作,仅在第一次工作,下次我无法获取数据。

如何解决这个问题。

controller.js

    var app = angular.module('main', ['ngTable', 'claimApp']); 
    app.controller('DemoCtrl', function ($scope, $filter, ngTableParams, appFactory,$http) {
   $scope.datasets = ["1", "2", "3"];
   $scope.dataset = "1"; 
   var data1 = [];
var data2 = []; 
var data3 = []; 
$scope.totalCnt = function () {
    return window.document.getElementById("tablesort").getElementsByTagName("TR").length - 1;
}; 

var getData = function () {  
    if ($scope.dataset == "1") { 
         $http.get('json/json0.json').success(function(data) {
           data1 = data; 
          });  
        return data1; 
    } else if ($scope.dataset == "2") { 
           $http.get('json/json1.json').success(function(data) {
           data2= data;   
          });  
           return data2; 
    } else if ($scope.dataset == "3") { 
               $http.get('json/json2.json').success(function(data) {
           data3= data;   
          });  
          return data3; 
    } 
};
$scope.$watch("dataset", function () { 
    $("#tablesort").fadeOut('slow', function () { 
        $scope.tableParams.reload();
        $scope.tableParams.page(1); 
        $("#tablesort").fadeIn('slow');   
    }); 
});
$scope.tableParams = new ngTableParams({
    page: 1, // show first page
    count: 10, // count per page
    sorting: {
        name: 'asc' // initial sorting
    }
}, {
    total: function () { 
        return getData().length;
        console.info("==="+getData().length);
    }, // length of data
    getData: function ($defer, params) {
        var filteredData = getData(); 
        console.info("filteredData"+filteredData);<!--i could not get this data second time only it is working first time-->
        var orderedData = params.sorting() ?
            $filter('orderBy')(filteredData, params.orderBy()) :
            filteredData; 
        var lastPage = (1 + Math.floor((orderedData.length - 1) / params.count())); 
        $("#lastpage").html(lastPage); 
        $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()));

    },
    $scope: {
        $data: {}
    } 
}); 
 });

根据文档

Request transformations:

If the data property of the request configuration object contains an object, serialize it         into JSON format.
Response transformations:

If XSRF prefix is detected, strip it (see Security Considerations section below).
If JSON response is detected, deserialize it using a JSON parser.

所以用在你的回应中

$http.get('json/json0.json').success(function(data) {
       data1 = JSON.parse(data); 
      });

编辑

var getData = function () {  
if ($scope.dataset == "1") { 

     $http.get('json/json0.json').success(function(data) {
       $scope.response = data; 
      });  
} else if ($scope.dataset == "2") { 

       $http.get('json/json1.json').success(function(data) {
       $scope.response = data; 
      });  

} else if ($scope.dataset == "3") { 

           $http.get('json/json2.json').success(function(data) {
       $scope.response = data; 
      });  

} 
return $scope.response;
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM