这里我从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}]}
下面, mainalbums 包含专辑,其中 totalAlbumCategory,loadmore,newpage 。 我想从数据中更新第二个相册。我怎么能在angularjs中做到这一点?
答案 0 :(得分:1)
这些都是Javascript对象和arrays - 你可以直接访问它们。
例如,如果问题中的对象被称为data
,则可以使用以下内容获取第二个(索引1
)对象的albums
数组:
data.mainalbums[1].albums
由于albums
是一个数组,您可以使用push()
方法添加,如下所示:
data.mainalbums[1].albums.push({"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 3"});
修改强>
在您的示例中,您没有类别标识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不允许你使用数字作为普通变量名称。但是,这仍然是做事的首选方式。)
答案 1 :(得分:1)
最后,
我在下面得到了答案(感谢您 Samuel-Jaeschke ): 您还可以使用 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);
}
} });
Happie !!