在这里,我从angularjs加载了数据,如下所示:
{"mainalbums":
[{"iCategoryID":"1","vCategoryName":"Hip Hop",
"albums":
[{"iAlbumID":"23","vAlbumName":"Mychoice 1"},{"iAlbumID":"30","vAlbumName":"Mychoice 2"}],
"totalAlbumCategory":2,
"loadmore":"false",
"newpage":1},
{"iCategoryID":"3","vCategoryName":"Country",
"albums":
[{"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 1"},
{"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 2"}],
"totalAlbumCategory":1,
"loadmore":"false",
"newpage":1},
{"iCategoryID":"4","vCategoryName":"Remixes",
"albums":[
{"iAlbumID":"25","vAlbumName":"Love me thoda aur 1"},{"iAlbumID":"26","vAlbumName":"Love me thoda aur 2"},
"totalAlbumCategory":4,"loadmore":"true","newpage":1}]}
这里主专辑有有totalAlbumCategory,loadmore,newpage的专辑。我想从数据中更新第二张专辑。如何在 angularjs 中做到这一点?
这些都是Javascript对象和数组 - 你可以简单地访问它们。
例如,如果您的问题中的对象称为 data
,则可以使用以下方法获取第二个(索引1
)对象的albums
数组:
data.mainalbums[1].albums
由于albums
是一个数组,因此可以使用 push()
方法进行追加,如下所示:
data.mainalbums[1].albums.push({"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 3"});
编辑:
在您的示例中,您没有类别 id 2
,这当前会导致您出现问题,因为您必须通过数组索引而不是实际 id 访问类别。由于您的类别具有 ID,因此您可能会发现,通过将mainalbums
相册更改为对象而不是数组,可以更轻松地整理相册。
例如,如果要像这样定义对象:
{"mainalbums": {
"1": {
"iCategoryID":"1", "vCategoryName":"Hip Hop",
"albums": [
{"iAlbumID":"23","vAlbumName":"Mychoice 1"},
{"iAlbumID":"30","vAlbumName":"Mychoice 2"}
],
"totalAlbumCategory":2,
"loadmore":"false",
"newpage":1
},
"3": {
"iCategoryID":"3", "vCategoryName":"Country",
"albums": [
{"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 1"},
{"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 2"}
],
"totalAlbumCategory":1,
"loadmore":"false",
"newpage":1
},
"4": {
"iCategoryID":"4","vCategoryName":"Remixes",
"albums":[
{"iAlbumID":"25","vAlbumName":"Love me thoda aur 1"},
{"iAlbumID":"26","vAlbumName":"Love me thoda aur 2"}
],
"totalAlbumCategory":4,
"loadmore":"true",
"newpage":1
}
}
然后,您可以使用如下所示的类别 ID 访问它:
data.mainalbums['3'].albums
当然,这取决于您是否可以控制此对象的构造方式。
(注意:mainalbums 现在是一个对象,而不是一个数组,但这个符号是必需的,因为我们需要引用数字。JavaScript 不允许你使用数字作为普通变量名称。但是,这仍然是首选的做事方式。
最后,
我得到了下面的答案(谢谢塞缪尔-杰施克):您也可以使用 concat:
$http.get('store/LoadAlbums/', {'iCategoryID': iCategoryID}).then(function (data) {
for (var i = 0; i < $scope.result.mainalbums.length; i++) {
if($scope.result.mainalbums[i].iCategoryID == iCategoryID){
$scope.result.mainalbums[i].albums = $scope.result.mainalbums[i].albums.concat(data.data.albums);
$scope.result.mainalbums[i].totalAlbumCategory = $scope.result.mainalbums[i].albums.concat(data.data.totalAlbumCategory);
$scope.result.mainalbums[i].loadmore = $scope.result.mainalbums[i].albums.concat(data.data.loadmore);
$scope.result.mainalbums[i].newpage = $scope.result.mainalbums[i].albums.concat(data.data.newpage);
}
} });
快乐!!