$ state.go重定向到不更改状态的旧URL

时间:2014-10-02 09:46:16

标签: angularjs angular-ui-router

我面临这个问题,因为state.go没有按预期工作

以下是各种状态的定义方式

(function (app) {
  'use strict';

  app.ng.requires.push('ui.bootstrap');
  //app.ng.requires.push('ngGrid');
  app.ng.requires.push('ui.router');
  app.ng.requires.push('ngTouch');
  app.ng.requires.push('ngAnimate');

  app.ng.run(
  ['$rootScope', '$state', '$stateParams',
  function ($rootScope, $state, $stateParams) {
    debugger;
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
  }
  ]
  );
  app.ng.config(
  ['$stateProvider',
  function ($stateProvider) {
    debugger;
    var modulePath = 'modules/listBuild';
    var ctrlRoot = app.root + modulePath + '/Views/';   
    $stateProvider
    .state('recipe',
    {
      url: '#recipe',
      templateUrl: ctrlRoot + 'selectRecipe.html'
    })
    .state('selectLocation',
    {
      url: '#selectLocation',
      templateUrl: ctrlRoot + 'selectLocation.html'
    })
 }]);

}(window.app));

并单击事件以使用state.go

更改视图
scope.goToListbuild = function () {             
            timeout(function () {
                location.path('/' + sessionSvc.get('clientKey') + '/' + sessionSvc.get('orgKey') + '/lists/build');
                state.go('recipe');         
            }, 10);
};

现在,当会话值发生变化时,应将用户重定向到不同的路径。当前正在发生的事情是,即使会话值改变了state.go也将其转移到较旧的URL。

我尝试了state.go和state.reload的differenet选项,但它没有工作

因此,如果这是主页的更改URL" / PQR / PQR-sec1 / lists"我点击链接它实际上回到" / ABC / ABC-sec1 / lists / build#recipe"而不是" / PQR / PQR-sec1 / lists / build#recipe"

1 个答案:

答案 0 :(得分:2)

我认为你为你的州定义了一个糟糕的网址,例如:

$stateProvider
  .state('recipe',
  {
     url: '/recipe', //url which looks like myDomain.com/#/recipe 
     templateUrl: ctrlRoot + 'selectRecipe.html'
  })
  .state('selectLocation',
  {
     url: '/selectLocation',
     templateUrl: ctrlRoot + 'selectLocation.html'
  });

但我建议您使用" ui-sref"在你的HTML中因为我认为你改变它onClick所以juste使用这样的东西

  <a ui-sref="recipe"> </a>

如果不起作用,请尝试评论您的专栏location.path(...)