我正在尝试从 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/