2015-10-15 92 views
1

我不知道爲什麼當我在html頁面上打印json文件時,也可以從調用函數的按鈕,但不在JavaScript文件中。Angularjs不加載json文件

這是一個問題,因爲我需要對json文件中的數據進行排序,然後才能在網頁中顯示它,但我無法使其工作。我試圖用這個解決方案https://stackoverflow.com/a/15463124/2796268, 但說沒有定義

jsonDat控制檯

我的代碼:

$scope.init = function() { 

     console.log("init"); 
    $http.get('json/file.json') .success(function(data) { 
      $scope.jsonDat = res.data; 
     }) 
     .error(function(data,status,error,config){ 
      $scope.jsonDat = [{heading:"Error",description:"Could not load json data"}]; 
     }); 

    console.log(jsonDat); 

}; 

我怎麼能在頁面加載之前處理JSON數據或當頁面正在加載?

+0

看起來像你想$ scope.jsonDat,而不是jsonDat。請記住,你將有權在保證成功回調的情況下訪問它,但在其他任何地方它必須被視爲異步變量(它可能爲空或它可能被解析的數據) – Hypaethral

+0

@GrumbleSnatch好吧,它現在有點用了,但它打印一個空數組 –

回答

2

試試這個:

$scope.init = function() { 

    console.log("init"); 
    $http.get('json/file.json').success(function(data) { 
      $scope.jsonDat = data; 
      console.log($scope.jsonDat); 
     }) 
     .error(function(data, status, error, config) { 
      $scope.jsonDat = [{ 
       heading: "Error", 
       description: "Could not load json data" 
      }]; 
      console.log($scope.jsonDat); 
     }); 

}; 

在你有數據成功,但嘗試從res.data得到。當你使用成功的時候,它不會迴應數據,而只會迴應你的數據。

3

可以處理數據時,它是從$http返回,就像這樣:

$scope.init = function() { 
    $http.get('json/file.json').success(function(data) { 
     //---- SORT HERE ---- 
     $scope.jsonDat = mySortFunction(data); 
    }); 
}; 
1

我以爲你想排序一些JSON文件,然後顯示在HTML頁面。所以我的想法是獲取JSON文件(你試過)

$http.get('json/file.json') .success(function(data) { 
     $scope.jsonDat = data.res; 
     console.log('Checking the result',angular.toJson($scope.jsonDat)); 
    }) 

但是把你的結果

$scope.jsonDat = data.res; 

例如,

sortService.sortJsn = data.res; 

$ scope.jsonDat而是創建角服務將數據倒入那裏,然後您可以訪問這些數據在你的控制器中排序它也顯示在HTML中。