2015-05-29 21 views
5

Tôi hiện đang làm việc trên một ứng dụng, xây dựng bằng cách sử dụng Ionic. Vấn đề của tôi là $ state.go chỉ hoạt động trong trình duyệt chứ không phải trên điện thoại. Điều này có vẻ là một vấn đề phổ biến, nhưng sau khi đọc rất nhiều câu trả lời cho cùng một câu hỏi, tôi vẫn không thể tìm ra cách khắc phục nó.

Sửa lỗi chung dường như là đảm bảo bạn đang sử dụng URL tương đối như được giải thích tại đây: Using Angular UI-Router with Phonegap nhưng tôi vẫn không thể làm cho nó hoạt động. Tôi đang thiếu gì?

Liên kết đến plunker: http://plnkr.co/edit/qFJ1Ld6bhKvKMkSmYQC8?p=preview

App.js cấu trúc:

.... 
    $stateProvider 
     .state('parent', { 
     url: "/", 
     templateUrl: "parent.html" 
    }) 
    .state('parent.child', { 
     url: "child", 
     templateUrl: "child.html" 
    }) 
    $urlRouterProvider.otherwise("/") 
    }) 
    .... 
+0

có bạn tri ed để làm $ state.go trong một chức năng? – carton

+0

Chưa - sẽ cố gắng và làm điều đó! – kandersen

+0

Tôi cập nhật plunker để $ state.go có chức năng cho 'menu 1'. Khi kiểm tra nó trên thiết bị, nó chỉ xuất hiện sau khi vuốt hoặc mở hoặc xuống, sau khi nhấp vào menu. Vì vậy, kịch bản này là, tôi nhấp vào menu 1 - không có gì xảy ra - vuốt lên hoặc xuống và sau đó chế độ xem xuất hiện. Tôi đã thử nghiệm nó trên điện thoại di động bằng cách sử dụng Ionic View – kandersen

Trả lời

0

Đối state.go để làm việc bạn phải tiêm phụ thuộc $ trạng thái để điều khiển của bạn

app.controller('ParentCtrl', ['$scope', '$state', function($scope, $state) { 
    $scope.$state = $state 
}]); 

app.controller('MenuCtrl', ['$scope', '$state', function($scope, $state){ 

    $scope.goTo = function(){ 
     $state.go('menu.kategorier'); 
    } 

}]); 

và bạn phải đăng ký trạng thái bạn muốn goto trong $ stateProvider

$stateProvider 
.state('menu.kategorier', {...}) 

và để đến trạng thái đó, bạn phải đi từ trạng thái gốc như 'menu' trong trường hợp này. bạn không thể thay đổi trạng thái từ 'parent' thành 'menu.kategorier' nhưng bạn có thể goto 'parent.child' từ 'parent'

+0

'menu.kategorier' là lỗi dán bản sao. Vì đây là những gì tôi đang sử dụng khi thử nghiệm trên thiết bị. Để làm cho nó đơn giản hơn trong plunker tôi đã sử dụng parent.child. Vì vậy, khi thử nghiệm nó tôi đã sử dụng đúng $ stateProvider. – kandersen

+0

Quên để thêm rằng, sửa phụ thuộc $ state trong bộ điều khiển dường như không khắc phục được sự cố, nơi tôi sẽ phải vuốt sau khi nhấp vào menu để chế độ xem xuất hiện. – kandersen

0

Tôi đã giải quyết nó bằng cách thay đổi thiết lập cho chế độ xem lồng nhau, dựa trên ví dụ này: http://codepen.io/mhartington/pen/Bicmo

đây là plunker của tôi, đối với những ai quan tâm:

Plunker: http://plnkr.co/edit/2m5bljMntpq4P2ccLrPD?p=preview

app.js cấu trúc:

$stateProvider 
     .state('eventmenu', { 
     url: "/event", 
     abstract: true, 
     template: "<ion-nav-view name='menuContent'></ion-nav-view>" 
     }) 

     .state('eventmenu.home', { 
     url: "/home", 
     views: { 
     'menuContent' :{ 
      templateUrl: "home.html" 
     } 
     } 
    }) 

    .state('eventmenu.home.home1', { 
    url: "/home1", 
    views: { 
     'inception' :{ 
     templateUrl: "home1.html" 
     } 
    } 
    }) 
Các vấn đề liên quan