【发布时间】:2015-09-13 01:32:34
【问题描述】:
我创建了具有一种称为 master {url: /master} 的状态的 ionic 应用程序。状态视图上有两个按钮。每个按钮都显示带有文本的隐藏 div。
我想通过这个规则实现历史跟踪:
- 当用户点击第一个按钮时,url 应附加 firstOpened=true
- 当用户点击第二个按钮时,url 应附加 secondOpened=true
- 控制器应保持不变(无需重新初始化)
- 浏览器的后退按钮应撤消上一个操作,例如:如果用户打开第一个 div,则后退按钮应关闭此 div 并恢复 url 而无需重新加载页面。
- 如果主状态历史记录为空,则返回按钮应恢复之前的状态(如果存在)
如果我使用 $state.go 更改 url,那么 ionic 将重新初始化状态和所有控制器。看起来我从一个视图移动到另一个视图(从一个状态到另一个),但我不想更改状态,我想更新 url 并推送历史记录。我想使用相同的状态而不重新初始化。
我创建 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;
};
}
}
}
})
})
【问题讨论】: