@@ -36,6 +36,7 @@ function(scope, element, $$ionicAttachDrag, $interval) {
3636 self . loop = slideList . loop ;
3737 self . delta = slideList . delta ;
3838
39+ self . update = update ;
3940 self . enableSlide = enableSlide ;
4041 self . autoPlay = autoPlay ;
4142 self . add = add ;
@@ -73,6 +74,18 @@ function(scope, element, $$ionicAttachDrag, $interval) {
7374 return slideList . next ( index ) ;
7475 }
7576
77+ function update ( ) {
78+ var selectedIndex = scope . selectedIndex ;
79+ for ( var i = self . count ( ) - 1 ; i >= 0 ; i -- ) {
80+ slideList . remove ( i ) ;
81+ }
82+ var slideNodes = element [ 0 ] . querySelectorAll ( 'ion-slide' ) ;
83+ for ( var j = 0 , jj = slideNodes . length ; j < jj ; j ++ ) {
84+ slideList . add ( jqLite ( slideNodes [ j ] ) . controller ( 'ionSlide' ) ) ;
85+ }
86+ self . select ( selectedIndex ) ;
87+ }
88+
7689 function enableSlide ( isEnabled ) {
7790 if ( arguments . length ) {
7891 self . dragDisabled = ! isEnabled ;
@@ -95,7 +108,7 @@ function(scope, element, $$ionicAttachDrag, $interval) {
95108 */
96109 function add ( slide , index ) {
97110 var newIndex = slideList . add ( slide , index ) ;
98- slide . onAdded ( slidesParent ) ;
111+ slide . onAdded ( ) ;
99112
100113 // If we are waiting for a certain scope.selectedIndex and this is it,
101114 // select the slide
@@ -126,12 +139,12 @@ function(scope, element, $$ionicAttachDrag, $interval) {
126139 if ( index === - 1 ) return ;
127140
128141 // If the slide is current, next, or previous, save so we can re-select after moving.
129- var isRelevant = self . isRelevant ( targetIndex ) ;
142+ var isRelevant = self . selected ( ) === index || self . isRelevant ( targetIndex ) ;
130143 slideList . remove ( index ) ;
131144 slideList . add ( slide , targetIndex ) ;
132145
133146 if ( isRelevant ) {
134- enqueueRefresh ( ) ;
147+ self . select ( targetIndex ) ;
135148 }
136149 }
137150
0 commit comments