How to push data to array in factory/service (ANGULAR/IONIC)

I want to create an app that work like this : https://ionic-songhop.herokuapp.com

As you can see, when we click favorite button, the item will store in factory and we can invoke in another page (favorite page)

In my case : i use service to store the item data and create factory to store the pushed item.

Here's my code : (I store data in service)

.service('dataService',function(){
  var service=this;
    this.playerlist = [
    { name: 'Leonel Messi', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
    { name: 'Cristiano Ronaldo', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
    { name: 'Zlatan Ibrahimovic', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
    { name: 'Wayne Rooney', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
    { name: 'Michael Carrick', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" },
    { name: 'Phil Jones', ava:"https://pbs.twimg.com/profile_images/473469725981155329/E24vfxa3_400x400.jpeg" },
    { name: 'Angel di Maria', ava:"https://i.scdn.co/image/d1f58701179fe768cff26a77a46c56f291343d68" }
    ]; 
})

.factory('User', function() {
    var play = { favorites: []}

    play.addToFavorites = function(song) {
      play.favorites.unshift(song);
    }

    play.removeFromFavorites = function(player, index) {
      play.favorites.splice(index, 1);
    }
    return play;
})

Controller :

.controller('ChooseTabCtrl', function($scope, dataService, User) {
  $scope.dataService=dataService;
  $scope.addToFavorite = function (item) {
      User.favorites.unshift(dataService.playerList.indexOf(), 1);
  }
})

But when i click the favorite button on each item, the list dont show in favorite page. Is it possible to do like this in Ionic app?

Here's my codepen : http://codepen.io/harked/pen/WvJQWp

There are a few issues with the code in your codepen...

In the controller you are referencing dataService.playerList.indexOf() when the player object is actually playerlist (all lowercase). Also, I assume you want to actually get the indexOf the player so that line needs to change to:

User.favorites.unshift(dataService.playerlist.indexOf(item));
// remove the `, 1` otherwise you'll be adding a `1` to the array everytime

and in your view, you need to change the following:

// wrong
ng-click="addToFavorite(item)"

// right 
ng-click="addToFavorite(player)"

Next, in your ListTabCtrl change the following:

$scope.players=dataService;

// to
$scope.players=dataService.playerlist;

Then in the view:

<ion-item ng-repeat="player in favorites" class="item item-avatar" href="#">
  <img ng-src="{{players[player].ava}}">
  <h2>{{players[player].name}}</h2>
  <p>Back off, man. I'm a scientist.</p>
  <ion-option-button class="button-assertive" ng-click="removePlayer(player, $index)">
  <i class="ion-minus-circled"></i>
  </ion-option-button>
</ion-item>

I have posted a working example of your code on jsbin: http://jsbin.com/lukodukacu/edit?html,css,js,output