2016-11-24 89 views
0

我一直試圖動態地填充我在$ 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 ---- ') 
    }); 
} 
+0

其中狀態是從哪裏來的?如果是get()誰設置()的值? – Aravind

回答

0

你試試看,console.log(state.name)得到每個國家的名稱和相應的其他東西?

+0

您的控制器是否連接到模塊?從你顯示的代碼看來,它似乎不是。 – Jagrut

0

$state.get()返回arrayfor ... initerates 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); 
}); 
+0

我編輯了我的答案以澄清它。您可以使用'console.log(value)'來詳細瞭解狀態配置對象。 – willie17