【问题标题】:angular ui-router $stateProvider states iterate through object properties角度 ui-router $stateProvider 状态迭代对象属性
【发布时间】:2016-11-24 15:58:10
【问题描述】:

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

为了清楚起见,举个例子让我们使用下面的状态,我需要能够动态生成带有状态名称(main、home、about)的导航栏

$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 ----   ')
    });
}

【问题讨论】:

  • 状态从何而来?如果是 get() 设置()值?

标签: javascript angularjs angular-ui-router state


【解决方案1】:

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

【讨论】:

  • 你的控制器连接到模块了吗?从您显示的代码来看,它似乎不是。
【解决方案2】:

$state.get() 返回 arrayfor ... in iterates over properties in object

您应该改用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);
});

【讨论】:

  • 我编辑了我的答案以澄清它。您可以使用console.log(value) 了解有关状态配置对象的更多信息。
猜你喜欢
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多