2015-05-27 20 views
6

Dưới đây là các bước để tái sản xuất:Ionic registerBackButtonAction không hoạt động

  1. Tạo một dự án ion cơ bản "ion thử nghiệm bắt đầu sidemenu"
  2. Thêm nền tảng Android "nền tảng ion thêm android"
  3. Trong app.js thêm mã:

    $ionicPlatform.registerBackButtonAction(function (event) { 
        alert("back button action handler");    
        event.preventDefault(); 
    }, 999); 
    

    mã này có thể được thêm vào trong các phương pháp .run hoặc trong $ ionicPlatform.ready() phương pháp - kết quả tương tự, không gia công ng

  4. "ion build android", sau đó "ion upload" -> hoặc manualy đặt apk trên một thiết bị

[BUG] - cảnh báo không được hiển thị và xem lịch sử chuyển hướng được thực hiện. Nó giống như hành động mà tôi cố gắng đăng ký không được xem xét.

Tôi đang làm gì sai? Tôi đã thử mã này trong một bộ điều khiển cũng, cũng e.stopPropagation() hoặc e.stopImmediatePropagation vẫn không thành công.

Tôi có Ionic mới nhất (1.4.5) và Cordova 4.3.0, được thử nghiệm trên một số thiết bị Samsung. Trong Ripple nó hoạt động ok.

+1

Cố gắng nghe cho sự kiện này sử dụng document.addEventListener ('backbutton', function() {alert ('backbutton phát hiện')}, false); – JimTheDev

+1

Nó có thể không hoạt động nhưng đó là sự kiện mà Ionic đang gói nên nó sẽ bị sa thải. – JimTheDev

+0

Nếu tôi sử dụng document.addEventListener ('backbutton', ......) nó hoạt động, nhưng tôi không có quyền truy cập vào các dịch vụ ion trong cuộc gọi lại đó để kiểm tra tên trạng thái hiện tại, kiểm tra lịch sử, để thêm điều kiện để thực hiện trở lại trong lịch sử hoặc ionic.Platform.exitApp() tùy thuộc vào trạng thái. – gmodrogan

Trả lời

0

Bạn có thể sử dụng mã 999 không? Ở đây thông tin về 100, 200, 300, 400, 500, nhưng không phải 900. http://ionicframework.com/docs/api/service/ $ ionicPlatform/

Tôi sử dụng mã ví dụ 501 và công trình này.

Đó là ví dụ từ dự án của tôi mà làm việc

$scope.$on("$ionicView.enter", function() { 
      $ionicPlatform.registerBackButtonAction(registerBackButtonAction, 501); 
     }); 

    function registerBackButtonAction(e) { 

      if (!!e && typeof e.preventDefault === 'function') { 
       e.preventDefault(); 
      } 

      // some code 

      return false; 
     } 
3

thử ngăn chặn mặc định đầu tiên

$ionicPlatform.registerBackButtonAction(function (event) { 
    event.preventDefault(); 
    alert("back button action handler"); 
}, 999); 

Ngoài ra mã 999 là hoàn toàn hợp lệ, mã 100, 200, 300, 400, 500 chỉ là những ưu tiên mà ionic asigns đến hành động nhất định của nút quay lại. Tôi đã sử dụng nhiều lần ưu tiên 900, nó chỉ đặt backbutton của bạn trên đầu trang của tất cả các hành động khác.

biết thêm thông tin trong tài liệu: http://ionicframework.com/docs/api/service/ $ ionicPlatform/

+0

Cảm ơn !!! Bạn cứu mạng tôi! –

Các vấn đề liên quan