【问题标题】:cannot resolve state angularjs无法解析状态angularjs
【发布时间】:2016-08-02 20:11:10
【问题描述】:

我在尝试从我的应用中的一个状态切换到另一个状态时遇到错误。

我在索引文件中定义了我的所有状态。

index.js

var MyModule = angular.module('myApp.ui.moduleTest', [
  'ui.router'
])
.config(function($stateProvider, modalStateProvider){
  $stateProvider

    .state('myApp.dashboard.appArea.moduleTest',
      modalStateProvider.create({
        animation: true,
        name: 'myApp.dashboard.appArea.moduleTest',
        url: 'apps/moduleTest',
        controllerAs: 'moduleTestCtrl',
        controller: 'ModuleTestCtrl',
        windowClass: 'semi-modal semi-modal--huge',
        templateUrl: function() {
          return 'app/ui/apps/moduleTest/widget.html';
        },
        resolve: {
          //Some function to retrieve data
        }
      })
    )
    .state('myApp.dashboard.appArea.moduleTest.wizards',
      modalStateProvider.create({
        animation: true,
        name: 'myApp.dashboard.appArea.moduleTest.wizards',
        url: 'apps/moduleTest/runWizard',
        controllerAs: 'moduleTestWizardCtrl',
        controller: 'ModuleTestWizardCtrl',
        templateUrl: function(){
          return 'app/ui/apps/moduleTest/wizard.html';
        }
        // resolve: {
        //
        // }
      })
    )
})

当我处于“myApp.dashboard.appArea.moduleTest”状态时,ModuleTestCtrl 我试图进入“myApp.dashboard.appArea.moduleTest.wizards”状态但我收到错误“无法解析状态” ”。如何在我的控制器中导入此配置模块以导航到该状态?

/*jslint node: true */
'use strict';

var angular = require('angular');

function ModuleTestCtrl($uibModalInstance, Api, diagnosticsRaw,  myService, $state) {

  this.$uibModalInstance = $uibModalInstance;
  this.Api = Api;
  this.dataRaw = diagnosticsRaw;

  this.parserData = function(indexes) {
      //Some app logic irrelevant
  }

  myService.setPropertyToRun(this.dataRaw);
  myService.setIsPropertyToRun(true);

$state.go('myApp.dashboard.appArea.moduleTest.wizards'); //THIS IS WHERE I HAVE MY PROBLEM

  };
}

ModuleTestCtrl.$inject = ['$uibModalInstance', 'Api', 'diagnosticsRaw', 'myService', '$state']; module.exports = ModuleTestCtrl;

【问题讨论】:

    标签: javascript angularjs angular-routing ui-sref


    【解决方案1】:

    您是否在您的 angular.config 中描述了 myApp.dashboard.appArea.moduleTestmyApp.dashboard.appArea.moduleTest.wizards 的所有父状态,如果没有,这可能是问题所在。

    示例:
    Wizards 是 moduleTest 的子代,它是 appArea 的子代,appArea 的子代是仪表板的子代,仪表板是 myApp 的子代,你明白了。您首先需要声明所有这些父状态,即使它们可能不做任何事情。

    有关 ui-state 的更多信息,请访问:
    https://github.com/angular-ui/ui-router/wiki/Nested-States-and-Nested-Views

    【讨论】:

    • 感谢您的回复。我在不同的文件夹和文件中的应用程序中定义了所有父路由。也许我错过了必需的注射或注射?我正在尝试这样看
    • 我终于解决了。定义了所有父路由,但是在我的内部脚本中错误地导入了其中一个父状态。结果没有创建嵌套状态。本质上,这个答案是正确的,所以我将其标记为已解决。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2016-04-16
    • 2017-08-24
    • 1970-01-01
    • 2015-11-19
    相关资源
    最近更新 更多