我正在尝试点击搜索按钮来更改状态。
$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);
});
答案 0 :(得分:0)
使用$state.go("abc");
代替$state.go("abc", {});
。当您致电$state.go()
时,您只需指定州名称