根据http://christopherthielen.github.io/ui-router-extras/#/sticky使用ui-router-extras
粘性状态(并行状态)和深度状态重定向,我无法转换到之前已激活的状态。
app.js
'use strict';
angular.module( 'StickyStateDemo', [
'ui.router',
'ct.ui.router.extras',
'StickyStateDemo.controllers'
])
.config(function($stateProvider, $stickyStateProvider, $urlRouterProvider) {
var states = [];
$stickyStateProvider.enableDebug(true);
states.push({name: 'contentview', url: '/',
views: {
'@': {controller: 'ContentViewCtrl', templateUrl: 'contentView.tpl.html'}
}});
states.push({name: 'contentview.small', url: 'small/{myId}',
views: {
'smallview@contentview': {controller: 'SmallViewCtrl', templateUrl: 'smallView.tpl.html'}},
deepStateRedirect: true, sticky: true
});
states.push({name: 'contentview.large', url: 'large/{myId}',
views: {
'largeview@contentview': {controller: 'LargeViewCtrl', templateUrl: 'largeView.tpl.html'}},
deepStateRedirect: true, sticky: true
});
angular.forEach(states, function(state) { $stateProvider.state(state); });
$urlRouterProvider.otherwise('/');
})
.run( function run ($rootScope, $state, $stateParams) {
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
});
controllers.js
'use strict';
angular.module('StickyStateDemo.controllers', []);
angular.module('StickyStateDemo.controllers')
.controller('MainCtrl', function ($scope, $state) {
$scope.launchSmallView = function() {
$state.go('contentview.small', {myId: 1});
};
$scope.launchLargeView = function() {
$state.go('contentview.large', {myId: 1});
};
})
.controller('ContentViewCtrl', function ($scope) {
})
.controller('SmallViewCtrl', function ($scope) {
})
.controller('LargeViewCtrl', function ($scope) {
});
使用整个应用程序的Plunker:http://plnkr.co/edit/yvtoUle0ZUWkSOmjlCoQ?p=preview您可以在第一次输入两个状态,但尝试返回先前激活的状态将失败。
我可能只是遗漏了一些东西,但是我已经搜索了互联网上的例子并尝试了很多变化,但我尝试的所有内容都会产生同样的行为。
答案 0 :(得分:3)
原来这是ui-router-extras中的一个错误:https://github.com/christopherthielen/ui-router-extras/issues/103。恢复到ui-router v0.2.11(并在v0.0.10保留ui-router-extras)是一个临时修复。
更新:此后已在ui-router-extras
中修复