Angularjs 以编程方式访问angular ui路由器的所有状态

Angularjs 以编程方式访问angular ui路由器的所有状态,angularjs,angular-ui,angular-ui-router,Angularjs,Angular Ui,Angular Ui Router,我有一个$stateProvider,配置如下: angular.module'example',['ui.router'] .configfunction$stateProvider,$urlRouterProvider{ $urlRouterProvider.org/steps; $stateProvider.state'steps'{ url:“/steps”, templateUrl:'steps.html', 控制器:函数$scope,$state{ $scope.$on'$stat

我有一个$stateProvider,配置如下:

angular.module'example',['ui.router'] .configfunction$stateProvider,$urlRouterProvider{ $urlRouterProvider.org/steps; $stateProvider.state'steps'{ url:“/steps”, templateUrl:'steps.html', 控制器:函数$scope,$state{ $scope.$on'$stateChangeSuccess',functionevent,toState,toParams,fromState,fromsparams{ $scope.currentStep=toState.data&&toState.data.stepNumber; }; 如果$state.is'steps'{ $state.go.第一个'; } } } .陈述“第一步”{ url:“/first”, 模板:“第一个”, 数据:{ 步骤编号:0 }, } .state'steps.second'{ url:“/秒”, 模板:“第二个”, 数据:{ 步骤编号:1 }, } .陈述“第三步”{ url:“/third”, 模板:“第三个”, 数据:{ 步骤编号:2 }, }; }; angular.elementdocument.readyfunction{ angular.bootstrapdocument,['example']; }; ul{列表样式:无;} li{显示:内联块;} {{currentStep}} 上 下一个 实例 先去 转到第二 转到第三
它并不是很干净,但您可以在当前步骤的函数中生成您的状态名称

链接一个函数changeStep,它将在params中取一个delta,并执行如下操作

 $scope.changeStep = function (delta) {
      var newStep = $scope.currentStep + delta;
      var stateName = "steps.";

      switch (newStep){
           case 1:
              stateName += "first";
              break;
            etc...
       }

       $state.go(stateName);
 }
因此,在您的模板steps.html中

   <button ng-if="currentStep !== 0" ng-click="changeStep(-1)">Prev</button>
   <button ng-click="changeStep(1)" ng-if="currentStep !== 2">Next</button>

下一步我希望它是动态的,这不起作用id我添加步骤,按钮仍然不起作用这会起作用,但它不像我希望的那样动态,我希望按钮独立于步骤,以便我可以更改步骤,但我不必更改按钮。避免切换的唯一解决方案是更改步骤名称并使用step.1,因此更改步骤函数将为$state.gostateName+Newstep。但是,我如何使用动态创建的步骤检测最后一个步骤