访问AngularJS控制器中的嵌套JSON对象
我是AngularJS新手,正在尝试为访问AngularJS控制器中的嵌套JSON对象,json,angularjs,object,controller,Json,Angularjs,Object,Controller,我是AngularJS新手,正在尝试为曲目创建$scope,以供以后使用 data.json(示例): 控制器 app.controller('lyricsCtrl', function($scope, $http) { $http.get('data.json') .then(function(result) { $scope.albums = result.data; $scope.tracks = result.data.tracks;
曲目创建$scope
,以供以后使用
data.json(示例):
控制器
app.controller('lyricsCtrl', function($scope, $http) {
$http.get('data.json')
.then(function(result) {
$scope.albums = result.data;
$scope.tracks = result.data.tracks;
console.log($scope.tracks); //Undefined...
});
});
为什么$scope.tracks
未定义?result.data是一个数组,所以您必须使用index来访问它的子级,如:-
$scope.tracks = result.data[0].tracks;
如果您的json文件是原样的:
[
{
"album": "Album name",
"tracks": [
{
"id": "1",
"title": "songtitle1",
"lyric": "lyrics1"
},
{
"id": "2",
"title": "songtitle2",
"lyric": "lyrics2"
}
]
}
]
我们的答复如下:
data: Array[1]
0: Object
album: "Album name"
tracks: Array[2]
由于数据
以数组的形式返回,您可以像处理任何其他javascript数组一样通过索引进行访问,因此您可以执行循环,或者如果您知道只返回一个结果,则可以使用零索引:
$http.get('data.json').then(function(result) {
console.log(result);
// Assign variables
$scope.album = result.data[0].album;
$scope.tracks = result.data[0].tracks;
for (var i = 0, l = $scope.tracks.length; i < l; i++) {
console.log($scope.tracks[i].title);
}
});
$http.get('data.json')。然后(函数(结果){
控制台日志(结果);
//分配变量
$scope.album=result.data[0].album;
$scope.tracks=result.data[0]。跟踪;
对于(var i=0,l=$scope.tracks.length;i
它应该是result.data[0]。跟踪数据是一个数组
$scope.tracks=result.data[0]。跟踪 看起来您的数据
是一个包含曲目
和相册
的对象数组。因此,类似的内容适用于您的示例:result.data[0]。跟踪$http
在中返回respose
对象。然后函数和响应。data
是实际数据-即上面的顶级数组对象。@NewDev您完全正确,我误读了,认为OP使用了.success
。我的错误,我会更正。出于某种原因,使用“[0]”会实时(而不是本地)抛出错误,TypeError:无法读取未定义的属性“id”
$http.get('data.json').then(function(result) {
console.log(result);
// Assign variables
$scope.album = result.data[0].album;
$scope.tracks = result.data[0].tracks;
for (var i = 0, l = $scope.tracks.length; i < l; i++) {
console.log($scope.tracks[i].title);
}
});