2016-01-21 12 views
1

我有一個Ionic項目(使用AngularJS)的意見。路由是這樣的:在AngularJS中,views(路由)爲什麼控制器只執行前進?

.state('menu.play', { 
    url: '/play/:audioIndex', 
    views: { 
    'side-part': { 
     templateUrl: 'templates/play.html', 
     controller: 'playCtrl' 
    } 
    } 
}) 

在控制器上我得到「audioIndex」參數,並將其設置爲$rootScope$scope並顯示在控制檯

.controller('playCtrl', function($scope, $stateParams, $rootScope) { 
    $rootScope.viewsAudioIndex = $stateParams.audioIndex; 
    $scope.audioIndex = $stateParams.audioIndex; 

    console.log("stateParams.audioIndex: " + $stateParams.audioIndex); 
}) 

我在http://localhost:8100/#/menu/play/0開始。 我的下一個音頻按鈕是這樣的:

<a href="#/menu/play/{{audioIndex + 1}}">Next</a> 

我點擊三次,然後在控制檯上我有

stateParams.audioIndex: 0 
stateParams.audioIndex: 1 
stateParams.audioIndex: 2 
stateParams.audioIndex: 3 

這很好,問題是,當我點擊按鈕;

<a href="#/menu/play/{{audioIndex- 1}}">Back</a> 

控制檯不顯示任何信息,就像控制器不會被調用

我檢查了鉻開發工具(AngularJS選項卡)和$ rootScope不會改變當我去。視圖路由工作正常,沒有問題。

回顧,如果我開始在menu/play/0和我做

  1. 單擊下一步
  2. 單擊下一步
  3. 單擊下一步
  4. 單擊後退
  5. 單擊後退
  6. 單擊後退
  7. 點擊下一步
  8. 單擊下一步
  9. 單擊下一步

我得到的控制檯

stateParams.audioIndex: 0 
stateParams.audioIndex: 1 
stateParams.audioIndex: 2 
stateParams.audioIndex: 3 
stateParams.audioIndex: 1 
stateParams.audioIndex: 2 
stateParams.audioIndex: 3 

任何想法,爲什麼呢?我看到,當我回去的時候,範圍被破壞了,但是這並不能解釋$rootScope沒有被更新。

+2

您應檢查高速緩存在離子http://stackoverflow.com/a/31074503/1679310 –

回答

0

正如拉迪姆說我有禁用緩存:

angular.module('my-app.config', []) 
.config(function($ionicConfigProvider) { 
    $ionicConfigProvider.views.maxCache(0); 
}); 
0

一般角度路由必須使用ui-sref完成。沒有測試你的情況,但你仍然需要改變你的鏈接,以避免其他錯誤:

<a ui-sref="menu.play({audioIndex: {{audioIndex + 1}}})">Next</a> 
<a ui-sref="menu.play({audioIndex: {{audioIndex - 1}}})">Back</a> 
相關問題