2015-05-29 126 views
5

我目前正在使用Ionic構建應用程序。我的問題是$ state.go只能在瀏覽器中使用,而不能在手機上使用。這似乎是一個常見問題,但在閱讀了很多相同問題的答案之後,我仍然無法弄清楚如何解決這個問題。

一般修補程序似乎是要確保您使用相對URL,如下所述:Using Angular UI-Router with Phonegap但我仍無法使其工作。我錯過了什麼?

鏈接plunker:http://plnkr.co/edit/qFJ1Ld6bhKvKMkSmYQC8?p=preview

App.js結構:

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

你有三編輯做一個函數$ state.go? – carton

+0

還沒有 - 會嘗試做到這一點! – kandersen

+0

我更新了plunker,因此$ state.go在'menu 1'的函數中。在設備上進行測試時,只有在點擊菜單後,在滑動手指或滑動後纔會出現。所以場景是這樣的,我點擊菜單1 - 沒有任何反應 - 向上或向下滑動,然後出現視圖。我在手機上使用Ionic View – kandersen

回答

0

對於state.go工作,你必須注入$狀態依賴於你的控制器

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'); 
    } 

}]); 

和你必須註冊您想要轉到$ state的狀態提供商

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

爲了達到這種狀態,在這種情況下,您必須從父母狀態轉到「菜單」。你不能將狀態從'父'更改爲'menu.kategorier',但你可以從'父'變成'parent.child'

+0

測試了它,'menu.kategorier'是一個複製粘貼錯誤。這是我在設備上測試時使用的。爲了讓我更加簡單,我使用了parent.child。所以在測試時我使用了正確的$ stateProvider。 – kandersen

+0

忘了補充一點,糾正控制器中的$ state依賴關係似乎無法解決問題,在單擊菜單以使視圖出現後,必須輕掃。 – kandersen

0

我通過更改嵌套視圖的設置來解決它,基於此示例:http://codepen.io/mhartington/pen/Bicmo

這裏是我plunker,對於那些有興趣誰:

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

app.js結構:

$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" 
     } 
    } 
    }) 
相關問題