2013-07-18 52 views
1

我想,所以我寫這篇文章,以獲得從JSON數據數據:角JS - 讓JSON數據

app.factory('data', function($resource) { 
    return $resource('mock/plane_urls.json', {}, { 
     getTreeData: { method: 'GET', isArray: false } 
    }) 
}) 

,然後使用:

data.getTreeData.Carriers.Carrier; 

如果運營商是JSON文件中的第一個節點。但它不工作; /我有錯誤

Error: data.getTreeData.Carriers is undefined

回答

4

您正在嘗試將手伸入Carriers對象之前,它是牽強。在數據回來之前,運營商只是一個空洞的對象。

你可以做類似$scope.carriers = data.getTreeData();,然後在你看來有ng-repeat="carrier in carriers"

元素背後$資源的想法是,你會得到一個空的對象,因此該視圖渲染什麼。請求完成後,將替換空對象,並自動使用數據重新呈現視圖。

你也可以像這樣使用$ http服務,並提供一個回調函數,一旦數據被提取就執行。

$http.get('mock/plane_urls.json').then(function(data){ 
    carrier = data.Carriers.Carrier 
}); 

但是!應該把它分解成服務和控制器。只要有服務getTreeData返回承諾對象,像這樣:return $http.get('mock/plane_urls.json');,然後在您的控制器調用它與當時的(),併爲成功和錯誤回調。

getTreeData.then(
    function(data){ 
     carrier = data.Carriers.Carrier; 
    }, 
    function(err){ 
     console.log("Error: " + err); 
    }); 
+0

我需要在腳本中獲取這些數據。有另一種方法來獲取它嗎? – Mariola

+0

楊楊濤的做法會奏效。你也可以使用$ http對象發送你的請求,並提供一個回調函數來訪問'Carriers.carrier' – Hippocrates

+0

我已經更新了我的答案,詳細介紹了使用$ http和回調。 – Hippocrates

1

您可以使用$範圍$腕錶以製表data.getTreeData的值。 當新數據進入時,回調將被調用,然後,您可以獲取所需的數據。

http://docs.angularjs.org/api/ng。$ rootScope.Scope