ui-router sref没有更新位置栏

时间:2014-12-02 17:02:36

标签: angularjs angular-ui-router

当我使用ui-sref更改状态时,位置会更新,它的作用是显示正确的视图和控制器,并且可以从该控制器访问参数。

我的app.js看起来像这样:

/**
 * @ngdoc overview
 * @name adminPanelAngularApp
 * @description
 * # adminPanelAngularApp
 *
 * Main module of the application.
 */
angular
  .module('adminPanelAngularApp', [
    'ngCookies',
    'ngResource',
    'restangular',
    'ngRoute',
    'ngSanitize',
    'ngTouch',
    'nouislider',
    'blockUI',
    'ui.router',
    'ui.bootstrap',
    'environmentFilters',
    'ui.select2',
    'angular-ladda',
    'angular.filter'
  ])

  .run(['$rootScope', '$state', '$stateParams', function($rootScope, $state, $stateParams){
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
    $rootScope.environment = {};
    $rootScope.new_environments = []
    $rootScope.new_nodes = [];
  }]).config(function($stateProvider, $urlRouterProvider, RestangularProvider) {
    RestangularProvider.setBaseUrl('http://localhost:3000');

    // For any unmatched url, redirect to /404
    $urlRouterProvider.otherwise('/404');
    //
    // Now set up the states
    $stateProvider
      .state('environment/show', {
        url: "env/{appid}",
        views: {
          "top": {templateUrl: "views/environment/show.html", controller: 'EnvironmentCtrl'},
          "bottom": {templateUrl: "views/environment/nodes.html"}
        }
      })
});

这是我使用的链接:

ui-sref="environment/show({appid: nv.env.appid})"

基本上这样一切都有效,除了它在位置栏中正确显示网址。

1 个答案:

答案 0 :(得分:2)

我按照本期的建议修复了它

https://github.com/McNull/angular-block-ui/issues/40#issuecomment-64742130

$scope.$on('$locationChangeStart', function (event) {
 if (srvInstance.state().blockCount > 0) {
   //event.preventDefault();
 }
});

阻止ui-router做这件事。

我也可以像这样禁用自动ui-blocking:

blockUIConfig.autoBlock = false;