繁体   English   中英

角度ui路由器$ stateProvider声明对象属性的迭代

[英]angular ui-router $stateProvider states iterate through object properties

我一直在尝试从$ stateProvider中配置的状态动态填充导航栏。 当我尝试获取状态名称或url或其他未定义的属性时,我一直在使用$ state.get(),但是找不到任何示例来说明如何使用它来遍历状态

只是为了清楚起见,下面是一个使用波纹管状态的示例,我需要能够动态生成带有状态名称(主,家,关于)的导航栏

$stateProvider
  .state('main', {
    abstract: true,
    templateUrl: 'app/states/main/main.html'
  })
  .state('home', {
    url: '/',
    templateUrl: 'app/states/main/home/home.html',
    controller: 'HomeController',
    controllerAs: 'home'
  })
  .state('about', {
    url: '/about',
    templateUrl: 'app/states/main/about/about.html',
    controller: 'AboutController',
    controllerAs: 'about'
  })

看到控制器的实现可能没有意义

angular
.module('myapp')
.controller('NavBarController', NavBarController); 
function NavBarController($scope, $state) {
   var states = $state.get();
    angular.forEach(states, function (value, key) {
        // value returns [Object Object];
        // key returns numbers from 0 to 3
        console.log('get states ----   ')
    });
}

您是否尝试使用console.log(state.name)来获取每个州的名称以及相应的其他内容?

$state.get()返回一个数组,for ... in 在对象的属性上进行迭代

您应该改为使用angular.forEach

// Get all state config objects
var states = $state.get();

// Loops through each state in states
// "value" is each state config object
angular.forEach(states, function(value, key) {
  // Log each state name
  console.log(value.name);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM