我对这个特殊问题没有运气。我所查看的所有内容都与遇到问题并尝试过问题的人有关。刷新页面而不是我每次进入某个状态时刷新的问题。这只发生在IE浏览器中而不是Chrome。
代码:
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()
但是没有#39}帮助。
需要注意的是,如果我首先触发我的compose函数并转到该状态,则回复函数将起作用。但是,如果我尝试使用我的回复功能导航,则首先重新加载页面。
我可以确认的另一件事是我的controller
页面和页面本身加载得很好。您实际上可以看到弹出的表单。问题是,controller
加载后会触发刷新。没有错误。没什么。简单地在IE中失败。
答案 0 :(得分:0)
After many hours of research and having found nothing similar to my issue on the web I made a simple change. I moved my state change out of my controller and used ui-sref instead:
Code:
<div class="btn-group pull-right" ng-if="view.canReply()">
<a class="btn btn-primary" ui-sref="compose({messageSentId: view.replyMessageId})">
<i class="fa fa-reply"></i> Reply
</a>
</div>
Where 'view' is my controllerAs since I don't use $scope and I set my $stateparameter on the variable replyMessageId. Maybe this will help someone.