2015-08-20 26 views
5

Uygulamamda bir İyonik Popover var. İyonik hizmet, iyonik öykün ios ve XCode simülatörünü çalıştırdığımda popover görünür. Ancak, uygulamayı XCode'daki iPhone 4S'ime taklit ettiğimde veya kendi uygulamanızı görüntülemek için İyonic View uygulamasını kullandığımda, popover görünmez. HERŞEY hata ayıklandı ve kod çalışmıyor. Uygulamayı çalıştırırken konsolumda hiç hata yok.İyonik Popover XCode Simulator üzerinde çalışıyor ancak iPhone'da değil

Mavi bir ayda bir kez, 4S'mde popover görünecektir, ancak popover'in nasıl göründüğüne dair bir mantık yoktur. Bir parça kodu değiştirirdim, popover görünür, sonra tekrar değiştirdiğimde popover kaybolur. Bu işlemi tekrarlıyorum ve işe yarayan eski kod sürümüne geri dönüyorum. Bu sinir bozucu. Daha da kötüsü kimsenin bu mesaja cevap vermeyeceğinden korkuyorum. IPhone simulatörü ile gerçek iPhone'um arasında bir uyumsuzluğun neden olduğu konusunda yardım almak harika olurdu. Teşekkürler.

Düğme HTML

<div ng-controller="FilterPopoverController as filterPopover" class="text-right"> 
     <div on-tap="filterPopover.open()" ng-class="{filterButtonOpened: filterPopover.opened}" id="filter-button"> 
     <span class="assertive" > 
      <i class="icon ion-arrow-down-b"></i> 
      <span class="bold">FILTER</span> 
     </span> 
     </div> 
    </div> 

Popover HTML

<ion-popover-view id="filterPopover"> 
    <ion-header-bar class="bar-dark"> 
    <h1 id="popoverTitle" class="bold">FILTER BY</h1> 
    </ion-header-bar> 

    <ion-content> 
    <p>Content here</p> 
    </ion-content> 
</ion-popover-view> 

Popover Kontrolörü

.controller('FilterPopoverController', filterPopoverController) 

filterPopoverController.$inject = ['$ionicPopover', '$filter', '$scope', '$timeout']; 

function filterPopoverController($ionicPopover, $filter, $scope, $timeout) { 
    var vm = this; 

    vm.open = open; 

    vm.popover = null; 

    vm.opened = false; 

    activate(); 

    //Cleanup the popover when we're done with it! 
    $scope.$on('$destroy', function() { 
    vm.popover.remove(); 

    vm.opened = false; 
    }); 

    $scope.$on('popover.hidden', function() { 
    vm.opened = false; 
    }); 

    function activate() { 
    $ionicPopover.fromTemplateUrl('/templates/search/filter-popover.html', { 
     scope: $scope 
    }).then(function(popover) { 
     vm.popover = popover; 
    }); 
    } 



    function open() { 
     vm.opened = true; 

     vm.popover.show(); 
    } 
} 

ben bu kodun bazı hassas bilgi çıkarmak zorunda kalmıştım ama bu özü olduğunu onun.

Ben senin yayınlanan koda iki değişiklik yaptık
+0

Gereksiniminizin cevap bölümünde bu [link] (http://stackoverflow.com/questions/32118612/ionic-show-select-with-options-on-button-action) 'a bakabilirsiniz ve cevaplayınız. Herhangi bir sorunuz varsa –

+0

Bu bana yardımcı olmaz. Yaşadığım bu konuda kişisel deneyimleriniz oldu mu? Sorumu kodla güncelledim. – jason328

+0

uzun bir çekim olabilir ancak on-tap yerine ng-click = "filterPopover.open()" kullanmayı deneyin. İyonik jest olayları ile ilgili bazı sorunlar gördüm. Umarım sorun budur. –

cevap

4

: Bu dosyayı referans gerekir

'templates/search/filter-popover.html' 

yerine

'/templates/search/filter-popover.html' 

: birincisi olmak popover şablonunun yolunu değiştirmektir kök dizini yerine geçerli dizinden başlayarak

İkinci değiştirilen, açıldığında $event girişini geçmek içindir popover, bu yayınlanmıştır koda bu değişikliklerin ikisi uygulandıktan sonra ionic Popover

resmi belgelerinden, ben burada

son kodudur masaüstü tarayıcı, ios simülatörde popover, consistenly gerçek iPhone 4'ü görmek için yönetmek:

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

 
.run(function($ionicPlatform) { 
 
    $ionicPlatform.ready(function() { 
 
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard 
 
    // for form inputs) 
 
    if(window.cordova && window.cordova.plugins.Keyboard) { 
 
     cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true); 
 
    } 
 
    if(window.StatusBar) { 
 
     StatusBar.styleDefault(); 
 
    } 
 
    }); 
 
}) 
 

 
.controller('FilterPopoverController', filterPopoverController) 
 

 
filterPopoverController.$inject = ['$ionicPopover', '$filter', '$scope', '$timeout']; 
 

 
function filterPopoverController($ionicPopover, $filter, $scope, $timeout) { 
 
    var vm = this; 
 

 
    vm.open = open; 
 

 
    vm.popover = null; 
 

 
    vm.opened = false; 
 

 
    activate(); 
 

 
    //Cleanup the popover when we're done with it! 
 
    $scope.$on('$destroy', function() { 
 
    vm.popover.remove(); 
 

 
    vm.opened = false; 
 
    }); 
 

 
    $scope.$on('popover.hidden', function() { 
 
    vm.opened = false; 
 
    }); 
 

 
    function activate() { 
 
    $ionicPopover.fromTemplateUrl('templates/search/filter-popover.html', { 
 
     scope: $scope 
 
    }).then(function(popover) { 
 
     vm.popover = popover; 
 
    }); 
 
    } 
 

 

 

 
    function open($event) { 
 
     vm.opened = true; 
 

 
     vm.popover.show($event); 
 
    } 
 
}
<div ng-controller="FilterPopoverController as filterPopover" class="text-right"> 
 
    <div on-tap="filterPopover.open($event)" ng-class="{filterButtonOpened: filterPopover.opened}" id="filter-button"> 
 
    <span class="assertive" > 
 
     <i class="icon ion-arrow-down-b"></i> 
 
     <span class="bold">FILTER</span> 
 
    </span> 
 
    </div> 
 
</div>

Ben bu sorunu çözer umuyoruz.

+0

Teşekkür ederim efendim, günü kurtardın. – jason328

İlgili konular