12

I have 2 json files,services.json and services_show.json.At page load am fetching the data from services.json and it working properly.On a button click,i need to fetch the contents from service_show.json and append to the services array but it does not work.

var beautyApp = angular.module('findbeauty', []);

beautyApp.controller('beautycntrl',function($scope,$http){

    $http.get('http://localhost/Find-Beauty/media/services.json').success(function(data) {
        $scope.services=data.services;
        $scope.services1=data.services1;
    });

    $scope.Add = function(){

        $http.get('http://localhost/Find-Beauty/media/services_show.json').success(function(data) {
            console.log(angular.toJson(data.services));
            $scope.services.push(data.services);

        });

    };

    $scope.ViewMore = function(){

});

Services.json

{
"services":[
{
            "name": "Arun",
            "gender": "Damen",
            "duration": "1.5 Stunden",
            "price": "€65,00",
            "imagepath": "media/images/prfilepic1.png",
            "percentage": "90%"
        },

    ],
    "services1":[

    {
            "name": "Schnitt & Föhnen",
            "gender": "Damen",
            "duration": "1.5 Stunden",
            "price": "€65,00",
            "imagepath": "media/images/profilepic4.png",
            "percentage": "25%"
        },


    ]
}

service_show.json

{
"services":[
{
                "name": "Schnitt & Föhnen",
                "gender": "Damen",
                "duration": "1.5 Stunden",
                "price": "€65,00",
                "imagepath": "media/images/profilepic4.png",
                "percentage": "5%"
            },

    ],
    "services1":[

    {
                "name": "Schnitt & Föhnen",
                "gender": "Damen",
                "duration": "1.5 Stunden",
                "price": "€65,00",
                "imagepath": "media/images/prfilepic1.png",
                "percentage": "50%"
            },

    ]
}

How can i push the services_show.json data to $scope.services ? Any Help?

3
  • What do you mean by it doesn't work? You are missing to close your controller so that code won't work no matter what. Look here for the correct code: gist.github.com/VictorBjelkholm/8b2004289ed9b4336034 Commented Sep 26, 2013 at 9:43
  • Tried running your code locally and it is working fine for me.. Commented Sep 26, 2013 at 9:49
  • Thanks all for the reply.. Commented Sep 26, 2013 at 10:33

3 Answers 3

25

Array.prototype.push.apply() can be used for merging two arrays.

Merge the second array into the first one

$scope.services.push.apply($scope.services, data.services);
Sign up to request clarification or add additional context in comments.

Comments

7

You need to push one item at a time, like

angular.forEach(data.services,function(item) {
     $scope.services.push(item);
});

Comments

0

You also can use concat: Here I have my own code: Please refer

$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);
        }
       } });

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.