AngularJS UI-路由器:抽象状态 + 子状态不工作
AngularJS UI-Router : Abstract state + child states not working
我正在尝试使用抽象状态,但无法加载子项。
我的应用程序设置如下:
angular
.module('milordApp', [
'ui.router',
'ngAnimate',
'ngCookies',
'ngMessages',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch'
])
.run(function($rootScope) {
$rootScope.$on('$routeChangeStart', function(event, toState, toParams, fromState, fromParams) {
console.log(toState, toParams, fromState, fromParams);
});
})
.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/login");
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'views/login.html',
controller: 'LoginCtrl',
data: {
requireLogin: false
}
})
.state('app', {
abstract: true,
url: '/app',
data: {
requireLogin: true
}
})
.state('app.dashboard', {
url: '/dashboard',
templateUrl: 'views/dashboard.html',
controller: 'DashboardCtrl',
});
});
登录路由工作正常。但是,应用程序或 app.dashboard 路由没有注册,因为我什至无法从控制器 console.log 注册。
请注意 index.html 正在正确创建导航
<ul class="nav navbar-nav">
<li><a ui-sref="login" href="#/login">Login</a></li>
<li><a ui-sref="app.dashboard" href="#/app/dashboard">Dashboard</a></li>
</ul>
如果抽象状态的片段是真实的(按原样),问题应该这样解决:
.state('app', {
abstract: true,
url: '/app',
data: {
requireLogin: true
}
// add template for child
template: "<div ui-view></div>",
})
简单地说,每个状态都需要在某个地方注入。如果我们不使用命名视图(甚至绝对命名),则预计:
every child is injected into its parent target ui-view
我正在尝试使用抽象状态,但无法加载子项。
我的应用程序设置如下:
angular
.module('milordApp', [
'ui.router',
'ngAnimate',
'ngCookies',
'ngMessages',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch'
])
.run(function($rootScope) {
$rootScope.$on('$routeChangeStart', function(event, toState, toParams, fromState, fromParams) {
console.log(toState, toParams, fromState, fromParams);
});
})
.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/login");
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'views/login.html',
controller: 'LoginCtrl',
data: {
requireLogin: false
}
})
.state('app', {
abstract: true,
url: '/app',
data: {
requireLogin: true
}
})
.state('app.dashboard', {
url: '/dashboard',
templateUrl: 'views/dashboard.html',
controller: 'DashboardCtrl',
});
});
登录路由工作正常。但是,应用程序或 app.dashboard 路由没有注册,因为我什至无法从控制器 console.log 注册。
请注意 index.html 正在正确创建导航
<ul class="nav navbar-nav">
<li><a ui-sref="login" href="#/login">Login</a></li>
<li><a ui-sref="app.dashboard" href="#/app/dashboard">Dashboard</a></li>
</ul>
如果抽象状态的片段是真实的(按原样),问题应该这样解决:
.state('app', {
abstract: true,
url: '/app',
data: {
requireLogin: true
}
// add template for child
template: "<div ui-view></div>",
})
简单地说,每个状态都需要在某个地方注入。如果我们不使用命名视图(甚至绝对命名),则预计:
every child is injected into its parent target
ui-view