Emilien
Emilien

Reputation: 2761

How to pass an object from a view to a controller in ionic

I would like to pass an object from my view to my controller and I don't know ow to do ...

The object is the checked musics :

<label class="item item-input" id="lbl-name-playlist">
    <input ng-model="nom" type="text" placeholder="Nom de la playlist">
</label>
<div class="list">
    <ion-list ng-repeat="laMusique in lesMusiques" ng-model="laMusique">
        <ion-checkbox class="item" ng-model="isChecked">{{laMusique.titre}} - {{laMusique.artiste}}</ion-checkbox>
    </ion-list>
</div>

<button class="button button-full button-balanced" ng-click="createPlaylist(nom, laMusique)">Enregistrer</button>

And my controller :

$scope.createPlaylist = function(nomPlaylist, laMusique){

  var nom = nomPlaylist;
  //console.log(nom);
  var lesMusiquesSelectionnees = laMusique;
  console.log(laMusique);
};

console.log(laMusique) show me "undefinied" ...

Upvotes: 1

Views: 78

Answers (2)

papakias
papakias

Reputation: 3473

Maybe you should write a function that will run every time you click a checkbox and will detect if it is true or false and if it is true then it will add laMusique.titre to an array in the scope.

something like this:

label class="item item-input" id="lbl-name-playlist">
    <input ng-model="nom" type="text" placeholder="Nom de la playlist">
</label>
<div class="list">
    <ion-list ng-repeat="laMusique in lesMusiques">
        <ion-checkbox class="item" ng-model="isChecked" ng-click="clickedCheckbox(laMusique, isChecked)">{{laMusique.titre}} - {{laMusique.artiste}}</ion-checkbox>
    </ion-list>
</div>

<button class="button button-full button-balanced" ng-click="createPlaylist(nom)">Enregistrer</button>

and in your controller:

  $scope.musiqueSelected = [];

  $scope.createPlaylist = function(nomPlaylist){

   var nom = nomPlaylist;
   //console.log(nom);
   var lesMusiquesSelectionnees = $scope.musiqueSelected;
   console.log($scope.musiqueSelected);
  }    

   $scope.clickedCheckbox = function(Item, isChecked) {
       if (isChecked) {
            //in Item contains your current selected object
            //as per your need use it
            var selectedName = Item.titre;
            //add to table if selected
            $scope.musiqueSelected.push(selectedName);
       }
   }

Upvotes: 1

gianlucatursi
gianlucatursi

Reputation: 680

laMusique it'a an item of lesMusiques then you should put:

<button class="button button-full button-balanced" ng-click="createPlaylist(nom, laMusique)">Enregistrer</button>

inside your ng-repeat to have laMusique or have a bridge variable.

Upvotes: 0

Related Questions