小编Cra*_*ank的帖子

当页面刷新或深度链接时,angular-ui-router不满足状态解析承诺

使用AngularJS 1.2.16,ui-router和Restangular(对于API服务),我有一个带有子状态的抽象状态,它使用多个视图.子视图接受URL参数(通过$ stateParams)以及根据通过URL传递的给定ID从API获取记录的决心.

当您在整个站点中导航时,一切都很完美,但是如果您在给定页面上并刷新它(Command/Ctrl + r或单击刷新按钮)或通过点击带有ID的深层链接直接加载页面(这是更重要的问题)API服务被请求命中,但承诺永远不会完成解析,因此数据不可用于状态,控制器,模板等.

根据ui-router的文档,在所有promise都解决之前,不应该实例化控制器.我在Google和SO中搜索过高低,阅读了AngularJS,Restangular和ui-router文档,以及大量的博客,并尝试了我知道的每一次迭代来解决这个问题,找不到任何指向解决方案的内容.

这是有问题的代码:

company.js(控制器代码)

angular.module('my.company', ['ui.router', 'CompanySvc'])

.config(['$stateProvider', function config ($stateProvider) {
  $stateProvider
    .state('company', {
      abstract: true,
      url: '/company',
      data: {
        pageTitle: 'Company'
      },
      views: {
        'main': {
          templateUrl: 'company/companyMain.tpl.html'
        }
      }
    })
    .state('company.landing', {
      url: '/{id}',
      views: {
        'summary': {
          controller: 'CompanyCtrl',
          templateUrl: 'company/companyDetails.tpl.html'
        },
        'locations': {
          controller: 'CompanyCtrl',
          templateUrl: 'company/companyLocations.tpl.html'
        }
      },
      resolve: {
        companySvc: 'CompanySvc',
        // Retrieve a company's report, if the id is present
        company: ['$log', '$stateParams', 'companySvc', function ($log, …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs single-page-application restangular angular-ui-router

2
推荐指数
1
解决办法
3505
查看次数