2016-07-27 11 views
-1

現在、$ httpサービスを使用していくつかのJSONファイルを読み込もうとしています。私は正常にそれらを読んでいるが、object Objectのように表示されますので、私はオブジェクトのプロパティを読み取ることができません。

GETリクエストを使用するとファイルが正しく読み込まれませんか?しかし、私がJSON.stringify()をデータに使用すると、そこにあるべきすべてのプロパティを見ることができます。なぜなら、通常は取得したときに、これらの未定義オブジェクトとして表示されるからです。私は変数を初期化する方法かもしれませんか?ここで

は、JSONファイルからデータを取得するために私の関数である。ここでは

myMod.service('deployService', function ($http, envService) { 
var projectCache = []; 
var envCache = []; 
var envFilter = ""; 

function getDeployments() { 
    if (!projectCache) { 
     // return; 
    } else { 
     $http({ 
      method: 'GET', 
      url: '/json_files/dashboard.json' 
     }).then(
      function success(response) { 
       this.projectCache = response.data; 
       this.envFilter = envService.envFilter; 

       for (var i = 0; i < response.data.length; i++) { 
        // var item = JSON.stringify(response.data[i].environmentStatuses); 
        var item = response.data[i].environmentStatuses; 

        console.log("THE ITEM IS: " + item); 
        // this.envCache.push(item); 
        envCache.push(item); 

       } 

       console.log(envCache); 
      }, 
      function failure(reason) { 
       console.log("there was a failure in getProject in deployController") 
      }); 
    } 
}; 


return { 
    projectCache: projectCache, 
    envCache: envCache, 
    getDeployments: getDeployments, 
    envFilter: envFilter, 
    clearCaches: clearCaches 
}; 

}); 

は、コントローラのコードです:

myMod.controller("deployController", ['$scope', '$http', '$location', 'envService', 'deployService', function ($scope, $http, $location, envService, deployService) { 

//store the projects in this array 
$scope.projects = []; 
$scope.editingData = {}; 


$scope.selectedRow = []; // initialize our variable to null 
$scope.setClickedRow = function (index) { //function that sets the value of selectedRow to current index 
    $scope.selectedRow[i] = $scope.selectedRow[i] != true; 
    console.log(index); 
    console.log("row " + $scope.selectedRow[i]); 
}; 


//being used to fetch the name and to get the index 
$scope.getProjName = function (index) { 
    // $scope.envFilter = { 
    //  name: "" 
    // }; 
    console.log("INSIDE GETPROJNAEM"); 
    envService.clickedEnv(index, $scope.projects); 

    //console.log($scope.envFilter); 
}; 



$http({ 
    method: 'GET', 
    url: './json_files/dashboard.json' 
}).then(function successCallback(response) { 
    $scope.projects = response.data; 

}, function errorCallback() { 
    alert("cant find the dashboard json"); 
}); 






//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ENVIRONMENT CONTROLLER LOGIC~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
$scope.projEnvironments = []; 
$scope.editingData = {}; 

deployService.getDeployments(); 
$scope.projEnvironments = deployService.envCache; 
$scope.envFilter = deployService.envFilter; 
console.log("DEPLOYSERVICE.ENVCACHE: " + deployService.envCache); 
// console.log("projenv: " + $scope.projEnvironments); 
// console.log("envFilter: " + $scope.envFilter); 


$scope.getBranchName = function (environment) { 
    envService.setBranchName(environment); 
    console.log("THE ENVBRANCH:" + $scope.envBranch); 
}; 

}]); 
+1

角度制御器からサービスに電話する必要があります。これで、deployService.GetDeployments() –

+0

@ RaniRadcliffのような内容を読むことができます。私は私のコントローラーで 'deployService.GetDeployments()'を呼び出していますが、 'object Object'を返しています。通常、オブジェクトが返されると、クローム開発者ツールにドロップダウンメニューがありますが、これらのオブジェクトにはどちらもありません。 – winsticknova

+0

@winsticknovaコントローラコードでポストを更新できますか? –

答えて

0

あなたはあなたの中に依存関係としてあなたのサービスを含める必要が関連するコントローラ。次に、コントローラ内のサービスから適切なメソッドを呼び出します。例えば

myApp.controller('aController', ['$scope', 'deployService', function ($scope, deployService) { 
    //Some $scope variables and other controller code 
    deployService.getDeployments(); 
    $scope.myData = deployService.<variable from service>; 
}]); 

また、JavaScriptでアレイに変数を割り当てる際に注意してください。割り当ては値ではなく参照によって行われます。これは、考慮されていないと、望ましくない結果を生む可能性があります。このようなあなたのコントローラでコードを再書き込み

+0

サービスを私のコントローラに既に追加しました。サービスで関数を呼び出すのに問題はありません。何らかの理由でGET要求の戻り値オブジェクトのプロパティを読み取ることはできません。すべてが未定義のようです。 – winsticknova

+0

@winsticknova GETリクエストで結果が正しくない場合、バックエンドの問題のように聞こえます。バックエンドで使用しているフレームワークまたは言語は何ですか? –

0

試してみてください。

deployService.getDeployments() 
.success(function(data){ 
$scope.myData = data; 
}) 

$scope.myDataの上にマウスを移動することは間違って何か他のものがあるあなたにオブジェクトの配列を示していない場合。

0

$httpでサーバーから返された実際のjsonオブジェクトは、response.dataです。

jsonに「データ」プロパティが配列として含まれている場合は、それを繰り返し処理する必要があります。

response.data.data.forEach(
    d => JSON.stringify(d.environmentStatuses) 
) 
関連する問題