我对这个特定问题没有运气。我查过的所有东西都与有问题的人尝试刷新页面有关,而不是我每次进入某个特定状态时刷新的问题。这只发生在IE不铬。UI路由器刷新页面而不是状态更改
代码:
app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
.state('box', {
templateUrl: templatePath + 'box.html',
controller: 'BoxController',
controllerAs: 'box',
url: '/Box/{folder:string}'
})
.state('compose', {
templateUrl: templatePath + 'compose.html',
controller: 'ComposeController',
controllerAs: 'compose',
url: '/Compose/{messageSentId:int}'
})
.state('view', {
templateUrl: templatePath + 'view.html',
controller: 'ViewController',
controllerAs: 'view',
url: '/Box/{folder:string}/{messageId:string}/{messageSentId:string}'
});
$urlRouterProvider.otherwise('/Box/');
});
问题是与我组成状态。如果我直接去那样的状态:
vm.compose = function() {
$state.go('compose', { messageSentId: 0 }, { notify: true });
};
它工作得很好。但是,如果我添加不同数量的,除了0,并从不同的controller
调用它不起作用:
vm.reply = function() {
var id = Math.floor($stateParams.messageSentId);
$state.go('compose', { messageSentId: id }, { notify: true });
};
我想也许这是有问题的,因为它认为id
是一个字符串,因此不匹配/Compose/{messageSentId:int}
所以我加了Math.floor()
但这没有帮助。
需要注意的是,如果我先启动撰写功能并转到该状态,则回复功能将起作用。但是,如果我尝试使用我的回复函数导航,则首先重新加载页面。
我可以确认的另一件事是,我的controller
为该页和页面本身加载得很好。您实际上可以看到简单弹出的表单。问题是一旦controller
加载刷新被触发。没有错误。没什么。只是在IE中失败。