我有一個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
和我做
- 單擊下一步
- 單擊下一步
- 單擊下一步
- 單擊後退
- 單擊後退
- 單擊後退
- 點擊下一步
- 單擊下一步
- 單擊下一步
我得到的控制檯
stateParams.audioIndex: 0
stateParams.audioIndex: 1
stateParams.audioIndex: 2
stateParams.audioIndex: 3
stateParams.audioIndex: 1
stateParams.audioIndex: 2
stateParams.audioIndex: 3
任何想法,爲什麼呢?我看到,當我回去的時候,範圍被破壞了,但是這並不能解釋$rootScope
沒有被更新。
您應檢查高速緩存在離子http://stackoverflow.com/a/31074503/1679310 –