单击搜索按钮后,我正在尝试更改状态。
$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);
});发布于 2015-12-18 15:47:53
使用$state.go("abc");而不是$state.go("abc", {});。在调用$state.go()时,应该只指定状态的名称
https://stackoverflow.com/questions/34339877
复制相似问题