2016-01-03 3 views
0

Я установил значение on-tapdiv, чтобы открыть модальное значение, определенное в контроллере страницы. div является частью раздела ng-repeat. Модальная функция также принимает некоторые переменные, переданные ей div.Ionicmodal не открывается до третьего щелчка/касания

Когда приложение впервые запускается на моем устройстве (iPhone 6, работающем под управлением iOS 7), я должен нажать три раза до того, как модальный откроется. После этого он открывается последовательно, когда я касаюсь. Но когда приложение начинается, я должен нажать div 3 раза.

В консоли нет никаких ошибок. Как только модальная функция откроется, она работает так, как ожидалось.

Любые советы?

Вот код:

HTML

<div on-tap="doModal('{{embed.ID}}','reply','{{embed.oembed}}','{{embed.user}}');"> 
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 75 72" width="100" height="50"> 
     <path d="imagestuffhere"/> 
     </svg> 
    </div> 

CONTROLLER

$scope.doModal = function(this_ID,modaltype,this_oembed,this_user) {  
    $scope.contact = { 
    name: this_ID, 
    info: modaltype, 
    oembed: this_oembed, 
    user: this_user 
    } 

    if (modaltype == 'repost') { 
    $scope.modaltempl = 'templates/repost-modal.html'; 
    } 
    else if (modaltype == 'reply') { 
    $scope.modaltempl = 'templates/reply-modal.html'; 
    } 
    else if (modaltype == 'like') { 
    $scope.modaltempl = 'templates/like-modal.html'; 
    } 
    else { 
    $scope.modaltempl = 'templates/like-modal.html'; 
    } 

    $ionicModal.fromTemplateUrl($scope.modaltempl, { 
    scope: $scope, 
    animation: 'slide-in-up' 
    }).then(function (modal) { 
    $scope.modal = modal; 
    $scope.modal.show(); 
    console.log($scope.modaltempl); 
    }); 
};  

    $scope.closeModal = function() { 
    $scope.modal.hide(); 
    }; 

    $scope.$on('$destroy', function() { 
    $scope.modal.remove(); 
    }); 

Я попытался потянув $ionicModal.fromTemplateUrl($scope.modaltempl, немного за пределами $scope.doModal и вызова $scope.modal.show изнутри $scope.doModal, но результат тоже самое.

Он определенно подходит к заявлению scope.modal.show();, даже если модальный не открывается, потому что console.log я включил сразу после его выхода.

Прежде чем я добавил svg к интерфейсу, я тестировал это с помощью элемента button и имел ту же проблему. У него также была та же проблема, когда я использовал ng-click вместо on-tap.

Спасибо за помощь!

ответ

0

Оказывается, проблема была не в коде контроллера ионизирующего кода, ни в запуске html, а в модальном шаблоне.

За документацию Ионные, я имел каждый из моих модальных шаблонов, обернутых в этом:

<script type="text/ng-template" id="repost-modal.html"></script>

Удаляя, что и заменить его только <ion-modal-view></ion-modal-view> вопрос был решен, и модальности в настоящее время открываются очень красиво на первый клик.

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