[英]angular js - getting json data
我試圖從json數據中獲取數據,所以我這樣寫:
app.factory('data', function($resource) {
return $resource('mock/plane_urls.json', {}, {
getTreeData: { method: 'GET', isArray: false }
})
})
然后使用:
data.getTreeData.Carriers.Carrier;
其中Carriers是json文件中的第一個節點。 但這不起作用; /我得到了錯誤
錯誤:data.getTreeData.Carriers未定義
您正在嘗試在提取Carriers
之前到達Carriers
對象。 在數據返回之前,載波只是一個空對象。
您可以執行類似$scope.carriers = data.getTreeData();
然后在您認為包含ng-repeat="carrier in carriers"
的元素
$ resource背后的想法是,您得到一個空對象,因此視圖不呈現任何內容。 請求完成后,將替換空對象,並自動使用數據重新渲染視圖。
您也可以像這樣使用$ http服務,並提供一個回調函數,該函數在獲取數據后立即執行。
$http.get('mock/plane_urls.json').then(function(data){
carrier = data.Carriers.Carrier
});
但! 應該將其分為服務和控制器。 只需讓服務getTreeData
返回promise對象即可: return $http.get('mock/plane_urls.json');
然后在您的控制器中使用then()進行調用,並提供成功和錯誤的回調:
getTreeData.then(
function(data){
carrier = data.Carriers.Carrier;
},
function(err){
console.log("Error: " + err);
});
您可以使用$ scope。$ watch來監視data.getTreeData的值。 當輸入新數據時,將調用回調,然后,您可以獲取所需的數據。
http://docs.angularjs.org/api/ng。$ rootScope.Scope
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.