2016-06-22 3 views
0

У меня есть коробка слайдов внутри модального.

Шкаф слайда использовался внутри модального шаблона с соответствующими функциями внутри контроллера.

Я понял, что лучше переместить его внутри директивы и переместить все функции внутри функции ссылки директивы.

Итак, вот что я сделал:

шаблона Модального называет только директиву: <my-directive></my-directive> и больше ничего.

Код директивы следующее:

angular.module('feedback', []).directive('myDirective', [ 
    '$ionicSlideBoxDelegate', '$rootScope', 'Info', function($ionicSlideBoxDelegate, $rootScope, Info) { 
    var linkFunction; 

    linkFunction = function(scope) { 

     scope.data = { 
     timestamp: new Date, 
     details: { 
      app: Info.getAppInfo(), 
      device: Info.getDeviceInfo() 
     }, 
     user: $rootScope.currentUser, 
     message: '' 
     }; 

     scope.slideChanged = function(index) { 
     scope.slideIndex = index; 
     }; 

     scope.disableSwipe = function() { 
     $ionicSlideBoxDelegate.enableSlide(true); 
     }; 

     scope.slideTo = function(index) { 
     console.log("Got here..."); 
     console.log("Index is: ", index); 
     $ionicSlideBoxDelegate.slide(index); 
     }; 

    }; 
    return { 
     restrict: 'E', 
     replace: false, 
     templateUrl: './directives/feedback/feedback.tpl.html', 
     link: linkFunction 
    }; 
    } 
]); 

и шаблон выглядит следующим образом:

<div> 
    <ion-slide-box ng-init="disableSwipe()" on-slide-changed="slideChanged(index)" class="feedback-slider" show-pager="false"> 

     <ion-slide> 
      <ion-item class="item-icon item-icon-right" ng-click="slideTo(1)"> 
     </ion-slide> 

     <ion-slide> 
     <button class="button button-positive button-clear no-animation" 
       ng-click="slideTo(0)">Back</button> 
     </ion-slide> 

    </ion-slide-box> 
</div> 

Это путешествие вниз версия шаблона, но оно должно быть достаточно, чтобы объяснить, что это происходит.

в основном, ни одна из функций не вызывается. Я имею в виду, их называют, когда консоль печатается и отображает ожидаемые значения, но это похоже на то, что все, что связано с $ionicSlideBoxDelegate, не увольняется, и я действительно не понимаю, почему.

Любая помощь?

Благодаря

ответ

1

Так,

После долгих исследований и пытаются отладить ионную функцию, мне удалось решить эту проблему с помощью ионного форум по этой ссылке:

https://github.com/driftyco/ionic/issues/1865

Швы похожи на проблему, когда у вас есть несколько слайдеров в вашем приложении, и это известная проблема в ионной библиотеке.

я изменить свой код так:

$ionicSlideBoxDelegate.$getByHandle('feedbackDirective')._instances[0].enableSlide(false); 

и добавил обработчик в шаблоне HTML, а также:

<ion-slide-box ng-init="disableSwipe()" 
         on-slide-changed="slideChanged(index)" 
         class="hg-feedback-slider" 
         show-pager="false" 
         delegate-handle="feedbackDirective"> 

         ... 

и теперь он правильно работать снова.

Смежные вопросы