簡體   English   中英

angular js-獲取json數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM