$ state.go不更改URL

时间:2015-12-17 16:41:54

标签: javascript angularjs angular-ui-router

我正在尝试点击搜索按钮来更改状态。

$state.go("abc", {});

问题是,状态变得成功,但浏览器URL没有得到更新。经过进一步调试,我发现$stateChangeStart, $stateChangeSuccess and $locationChangeStart被正确解雇但$ locationChangeSuccess没有被解雇。 在我的状态abc的控制器中,我有一个服务器端请求来获取一些数据。

PlaceService.getDetails.query({}, {}).$promise.then(function(result){
    //do something
});

有趣的情况是,如果我注释掉这个请求,URL会正确更新。如果我允许将此请求发送到服务器,则URL不会更新。奇怪的行为,但仍然发生。

任何人都可以说出可能是什么原因以及如何解决这个问题?

**已更新

为了给出一些粗略的想法,我的配置功能有点像这样。

app.config(function($stateProvider, $ocLazyLoadProvider) {
   var abc = {
        name : 'abc',
        url : '/abc',
        views : {
            'container@' : {
                templateUrl : 'javascript/templates/abc.html',
                controller : 'AbcController'
            }
        },
        resolve : {
            loadMyService: ['$ocLazyLoad', function($ocLazyLoad) {
                return $ocLazyLoad.load(
                  {
                    name: 'tablet',
                    files: ['javascript/services/placeService.js']
                  });
                }],
            loadMyCtrl: ['$ocLazyLoad', function($ocLazyLoad) {
              return $ocLazyLoad.load(
                {
                  name: 'tablet',
                  files: ['javascript/controllers/abcController.js']
                });
            }]
        }        
    };

    $stateProvider.state(abc);
});

1 个答案:

答案 0 :(得分:0)

使用$state.go("abc");代替$state.go("abc", {});。当您致电$state.go()时,您只需指定州名称