2015-06-16 5 views
1

Здесь я загружены данные из angularjs, как показано ниже:Как добавить/добавить новые загруженные данные в массив в 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

Чтобы уточнить, ваш вопрос помечен PHP, но ваш фрагмент выше в JavaScript/JSON. Вы надеетесь изменить его на клиенте (используя браузер Javascript/AngluarJS) или на сервере (в PHP)? –

ответ

1

Все объекты Javascript и arrays - вы можете просто получить к ним доступ.

Например, если объект в вашем вопросе был назван data, вы могли бы получить albums массив второго (индекс 1) объекта, используя следующие:

data.mainalbums[1].albums 

Поскольку albums массив, вы можете добавить с помощью push() метод следующего образом:

data.mainalbums[1].albums.push({"iAlbumID":"31","vAlbumName":"Dil Dhadkne Do 3"}); 

Edit:

В вашем примере у вас нет идентификатора категории 2, что в настоящее время вызывает проблемы, так как вам нужно получить доступ к категориям по индексу массива, а не по фактическому идентификатору. Поскольку у ваших категорий есть идентификаторы, вам может быть проще организовать ваши альбомы, изменив значение 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 
    } 
} 

Тогда вы могли бы получить доступ к нему с помощью категорий идентификаторов, как это:

data.mainalbums['3'].albums 

Это, конечно, зависит от того, есть ли у вас контролировать, как этот объект строится.

(Примечание: mainalbums теперь является объект , не массива, но это обозначение не требуется, так как нам нужно указать номер JavaScript не позволит использовать номера как простые имена переменных, однако, это.. по-прежнему является предпочтительным способом делать вещи)

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 !!

Смежные вопросы