angular js - 获取json数据

时间:2013-07-18 20:42:13

标签: javascript html json angularjs

我正在尝试从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未定义

2 个答案:

答案 0 :(得分:4)

您尝试在获取之前进入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
});

BUT!应该将其分解为服务和控制器。只需让服务getTreeData像这样返回promise对象:return $http.get('mock/plane_urls.json');然后在你的控制器中用then()调用它并提供成功和错误的回调:

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

答案 1 :(得分:1)

您可以使用$ scope。$ watch来查看data.getTreeData的值。 当新数据进入时,将调用回调,然后,您可以获得所需的数据。

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