I`am創建了一個名爲master {url:/ master}的離子應用程序。狀態視圖上有兩個按鈕。每個按鈕都顯示帶有文本的隱藏div。歷史內部狀態
我想通過這個規則來實現歷史追蹤:
- 當第一個按鈕用戶點擊則URL應與firstOpened =真正的附加
- 當第二個按鈕用戶點擊則URL應該有附加secondOpened =真
- 控制器應保持不變(無需重新初始化)
- 回到瀏覽器的按鈕應該撤消最後一個動作,例如:如果用戶打開第一個div然後後退按鈕應該關閉這個div並沒有頁面還原網址相對OAD。
- 如果主狀態的歷史記錄爲空,則返回按鈕應該如果exsits
如果我使用$ state.go更改URL,然後離子將重新初始化狀態,所有控制器恢復以前的狀態。它看起來像我從一個視圖移動到另一個視圖(從一個狀態到另一個狀態),但我不想更改狀態,我想更新url並推送歷史記錄。我想在不重新初始化的情況下使用相同的狀態。
I`am創建了plunker沒有歷史跟蹤。有人可以幫我實施歷史追蹤嗎?
的script.js(見):
angular.module('starter', ['ionic'])
.config(function($stateProvider, $urlRouterProvider) {
var controller = 0;
$urlRouterProvider.otherwise("/master");
$stateProvider.state('master', {
url: '/master?firstOpened&secondOpened',
views: {
'default': {
templateUrl: 'content.html',
controller: function($scope, $ionicHistory, $stateParams, $state) {
console.log('Initing controller...');
controller = controller + 1;
$scope.controller = controller;
$scope.firstOpened = $stateParams.firstOpened
$scope.secondOpened = $stateParams.secondOpened
$scope.openFirst = function() {
$scope.firstOpened = true;
};
$scope.openSecond = function() {
$scope.secondOpened = true;
};
}
}
}
})
})
您的解決方案無法解決我的問題。如果你用state.go改變狀態,那麼ui-router會創建新的控制器。每按一下按鈕或歷史導航都會導致頁面上顯示的控制器索引發生變化。 – caiiiycuk