使用ui-router-extras Sticky State无法转换到之前激活的状态

时间:2014-11-20 16:27:44

标签: angularjs angular-ui-router

根据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您可以在第一次输入两个状态,但尝试返回先前激活的状态将失败。

我可能只是遗漏了一些东西,但是我已经搜索了互联网上的例子并尝试了很多变化,但我尝试的所有内容都会产生同样的行为。

1 个答案:

答案 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

中修复