2016-07-07 23 views
1

我有角這樣的代碼 -JSON數據

$scope.data =[]; 
$http({ 
      method: "GET", 
      url: "http://127.0.0.1:8000/api/", 
     }).then(function success(response){ 
      var total = response.data.length; 
      for(var i=0; i<response.data.length; i++){ 
      $scope.companies.push(response.data[i].companies); 
      $scope.wtdcagr.push(response.data[i].wtdcagr); 
      } 
      for(var i=0; i<$scope.wtdcagr.length; i++){ 
      $scope.final_wtdcagr.push($scope.wtdcagr[i]+10); 
      $scope.sum += $scope.final_wtdcagr[i]; 
      } 
      $scope.max_val=$scope.sum/total; 
      for(var i=0; i<$scope.final_wtdcagr.length; i++){ 
      $scope.data.push({"name":$scope.companies[i], "children":[{"name":$scope.companies[i], "size":$scope.final_wtdcagr[i]}]}); 
      } 
      $scope.load=1; 
     },function error(response){ 
     }); 
    $scope.componentsData ={"name":"root","children":[{"name":"Koutons Retail India","children":[{"name":"Koutons Retail India","size":10}]},{"name":"Liberty Shoes","children":[{"name":"Liberty Shoes","size":7.975043433750518}]},{"name":"Bharat Petroleum Corporation","children":[{"name":"Bharat Petroleum Corporation","size":22.985710309643373}]},{"name":"Chennai Petroleum Corporation","children":[{"name":"Chennai Petroleum Corporation","size":13.214542375972897}]},{"name":"Gujarat State Fertilizers & Chemicals","children":[{"name":"Gujarat State Fertilizers & Chemicals","size":9.054818244756332}]},{"name":"Hindustan Organic Chemicals","children":[{"name":"Hindustan Organic Chemicals","size":10.54768008048322}]},{"name":"Tata Coffee","children":[{"name":"Tata Coffee","size":9.905904053799995}]},{"name":"Coffee Day Enterprises","children":[{"name":"Coffee Day Enterprises","size":9.132573506417222}]},{"name":"Corporation Bank","children":[{"name":"Corporation Bank","size":9.413101403401246}]},{"name":"Dena Bank","children":[{"name":"Dena Bank","size":2.9519383428833708}]}]} ; 
    // $scope.componentsData = { 
    //  "name": "root", 
    //  "children": $scope.data 
    // }; 

,並在我的HTML的

<div id="treeParentDiv" style="width:1200px;height:600px;margin:auto" > 
<treemap 
     data="componentsData" 
     parentElementId="treeParentDiv" 
      color-label="size" 
     size-label="size" 
      max-val="10" 
     search="{{searchbox}}" 
      id="IDTreeMap"> 
</treemap> 

它的工作原理,當$scope.componentsData是靜態的是,但是當我嘗試從json加載它並將其傳遞到$scope.componentsData,如

$scope.componentsData = { 
    "name": "root", 
    "children": $scope.data 
    }; 

它無法工作。 我正在使用的樹形圖是https://github.com/poshak/treemap

我懷疑在通過$scope.data收到數據之前,樹圖呈現。謝謝

+0

在您的代碼$ scope.componentsData如果實現是獲得$ HTTP承諾之前設置。您需要將$ scope.componentsData的設置移動到承諾的成功回調中 – jbrown

回答

1

在你的代碼中$ scope.componentsData在$ http promise之前被設置,如果滿足的話。您需要$ scope.componentsData的設置移動到承諾的成功回調,像這樣:

$http({ 
    method: "GET", 
    url: "http://127.0.0.1:8000/api/", 
    }).then(function success(response) { 
    var total = response.data.length; 
    for (var i = 0; i < response.data.length; i++) { 
     $scope.companies.push(response.data[i].companies); 
     $scope.wtdcagr.push(response.data[i].wtdcagr); 
    } 
    for (var j = 0; j < $scope.wtdcagr.length; j++) { 
     $scope.final_wtdcagr.push($scope.wtdcagr[j] + 10); 
     $scope.sum += $scope.final_wtdcagr[j]; 
    } 
    $scope.max_val = $scope.sum/total; 
    for (var k = 0; k < $scope.final_wtdcagr.length; k++) { 
     $scope.data.push({ 
     "name": $scope.companies[k], 
     "children": [{ 
      "name": $scope.companies[k], 
      "size": $scope.final_wtdcagr[k] 
     }] 
     }); 
    } 
    $scope.load = 1; 
    $scope.componentsData = { 
     "name": "root", 
     "children": $scope.data 
    }; 
    }, function error(response) {}); 
+0

即使在成功功能中設置它也不起作用。我發佈了一個鏈接到我正在使用的樹形圖。 – ThatBird

+0

@ThatBird - 好吧,我無法加載該樹圖組件來測試它,所以你可以添加這個元素:

{{ componentsData | json }}
到你的html並告訴我它是否呈現你期望的數據? – jbrown

+0

Json的數據是好的,因爲當我複製粘貼到組件數據的「子元素」時,樹形圖呈現得很好 – ThatBird

0

您需要更新$ scope.componentsData當時的函數內。

$scope.data =[]; 
 
$http({ 
 
      method: "GET", 
 
      url: "http://127.0.0.1:8000/api/", 
 
     }).then(function success(response){ 
 
      var total = response.data.length; 
 
      for(var i=0; i<response.data.length; i++){ 
 
      $scope.companies.push(response.data[i].companies); 
 
      $scope.wtdcagr.push(response.data[i].wtdcagr); 
 
      } 
 
      for(var i=0; i<$scope.wtdcagr.length; i++){ 
 
      $scope.final_wtdcagr.push($scope.wtdcagr[i]+10); 
 
      $scope.sum += $scope.final_wtdcagr[i]; 
 
      } 
 
      $scope.max_val=$scope.sum/total; 
 
      for(var i=0; i<$scope.final_wtdcagr.length; i++){ 
 
      $scope.data.push({"name":$scope.companies[i], "children":[{"name":$scope.companies[i], "size":$scope.final_wtdcagr[i]}]}); 
 
      } 
 
      $scope.load=1; 
 
     $scope.componentsData = { 
 
     "name": "root", 
 
     "children": $scope.data 
 
     }; 
 
     },function error(response){ 
 
     }); 
 

 
    // $scope.componentsData = { 
 
    //  "name": "root", 
 
    //  "children": $scope.data 
 
    // };

+0

即使在成功功能中設置它也不起作用。我發佈了一個鏈接到我正在使用的樹形圖。 – ThatBird