6

I'm using Ionic framework and Angular js to build a news app !

I'm showing the news on ion-slide-box using ng-repeat here is an example :

<ion-slide-box on-slide-changed="slideHasChanged($index)" show-pager="true" ng-if="items" >
  <ion-slide  ng-repeat="i in items">   
           <h4>{{i.name}}</h4>       
<p>{{i.gender}}</p> 
    <p>{{i.age}}</p>
</div> 
  </ion-slide>
    </ion-slide-box>

I want to insert data dynamically to my ion-slide-box for each slide so I'm using this code :

   $scope.slideHasChanged = function(index) {

          $scope.items.push("{name:'John', age:25, gender:'boy'}");
      }

but this doesn't seem to work right so if you have an idea on how can I reslove this that would be great :)

here is CODEPEN + CODE

Stranger B.
  • 9,004
  • 21
  • 71
  • 108

2 Answers2

8

You need to call the update method on $ionicSlideBoxDelegate. (Also, @mark-veenstra is correct, you're pushing a string and not an object).

angular.module('ionicApp', ['ionic'])

.controller('MyCtrl', function($scope, $ionicSlideBoxDelegate) {
  $scope.items=friends;

  $scope.slideHasChanged = function() {
    $scope.items.push({name:'John', age:25, gender:'boy'});
    $ionicSlideBoxDelegate.update();
  };

});

var friends = [
  {name:'John', age:25, gender:'boy'},
  {name:'Jessie', age:30, gender:'girl'},
  {name:'Johanna', age:28, gender:'girl'},
  {name:'Joy', age:15, gender:'girl'},
  {name:'Mary', age:28, gender:'girl'}
];

Also, make sure that you give your slider a height:

.slider {
  height: 200px;
}
jme11
  • 17,134
  • 2
  • 38
  • 48
  • Worked for me, i was populating the images using ion-slider, the issue i was facing was, only the last image was showing and the slider was not changing as well. Just placed the `$ionicSlideBoxDelegate.update();` method after my $scope.images object and it worked perfectly for me. – atul Mar 13 '18 at 07:28
1

I'm not completely sure what you are trying to achieve, but if you want this code to work, just change:

$scope.items.push("{name:'John', age:25, gender:'boy'}");

To:

$scope.items.push({name:'John', age:25, gender:'boy'});
Mark Veenstra
  • 4,691
  • 6
  • 35
  • 66