2016-07-28 132 views
0

我对这个特定问题没有运气。我查过的所有东西都与有问题的人尝试刷新页面有关,而不是我每次进入某个特定状态时刷新的问题。这只发生在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中失败。

回答

0

经过许多小时的研究,并没有发现类似于我在网上的问题,我做了一个简单的改变。我动了我的状态改变了我的控制器和用于UI的序列S代替:

代码:

<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> 

其中“观点”是我controllerAs,因为我不使用$范围和设置我的$ stateparameter在变量replyMessageId上。也许这会帮助别人。

相关问题