我正在尝试实现一个组件控制器,它使用ui-router config中定义的当前状态。
我正在使用角度1.6.1和ui-router 0.3.2。
我在调试中观察到的是,在控制器中,状态基本上是一个无人居住的对象。它有字段但没有值。
但是如果我将它绑定到范围并在UI中呈现,它在UI中具有正确的值,因此我只能假设在执行控制器后的某些时间将值绑定到当前状态。
是否存在某种类型的状态初始化,即使需要在控制器中填充current state
对象?
$state.current
定义:
{"name":"","url":"^","views":null,"abstract":true}
来自app bootstrap:
var userStates = [
{
name: 'signin',
url: '/signin',
templateUrl: 'views/signin.html',
data: {
title: 'Signin',
crumb: [
{title: 'app.home', uiState: 'home'},
{title: 'users.signin'}
]
}
}
];
userStates.forEach(function(state){
$stateProvider.state(state);
});
然后在组件定义文件中:
var app = angular.module('ocs.admin.ui');
var ctrl = ['$state', '$scope', 'lodash', function($state, $scope, lodash) {
$scope.uiState = $state;
var crumb = lodash.get($state, 'current.data.crumb');
if (state){
$scope.crumb = crumb;
}
}];
目前HTML文件非常简单:
<div class="page-breadcrumb">
<div class="container">
<ul class="breadcrumb">
<li>
<a href="index.html">Home</a>
<i class="fa fa-circle"></i>
</li>
<li>
<span>Dashboard</span>
</li>
</ul>
</div>
</div>
<pre>
{{uiState.current | json}}
</pre>
是否有我应该收听的事件或等待绑定对象的事情?
答案 0 :(得分:1)
你可以试试这个,
$scope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
$scope.uiState = $state;
});