javascript - angular js - 获取json数据

标签 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 文件中的第一个节点。但它不起作用;/我收到错误

Error: data.getTreeData.Carriers is undefined

最佳答案

您正试图在获取 Carriers 对象之前访问它。在数据返回之前,Carriers 只是一个空对象。

您可以执行类似 $scope.carriers = data.getTreeData(); 的操作,然后在您的 View 中有一个包含 ng-repeat="carrier in carriers" 的元素>

$resource 背后的想法是你得到一个空对象,所以 View 不渲染任何东西。请求完成后,空对象将被替换, View 将自动使用数据重新呈现。

您也可以像这样使用 $http 服务,并提供一个在获取数据后执行的回调函数。

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

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

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

关于javascript - angular js - 获取json数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17733499/

相关文章:

json - 澳大利亚房地产 API(用于 google maps mashup)

javascript - "res.end"不是 "res.on(' end ', () =>"中的函数(express.js)

JavaScript - 返回 [object Object]

javascript - 如何检测您正在使用 Twitter Bootstrap API 的设备 View ?

javascript - 为什么这个函数返回数组中的所有对象?

html - 如何在页面底部打印一次 HTML div block ,如果它与前面的元素重叠,如何跳转到下一页?

html - HTML空白规则的定义?

ios - 如何在 swift 中为 Post 请求创建 JSON Body

javascript - 找到点和圆 Canvas 之间的切线

javascript - 无法从 json 文件 AngularJS 获取正确的数据