2014-10-04 65 views
10

因为ngRoute我一直在玩UI,路由器并不完全掩盖什么,我需要根据我需要多个嵌套视图不同的布局。我无法在UI-Router中弄清楚如何加载默认嵌套视图,而无需单击链接。我创造了什么,我在一个plunkerUI-路由器如何自动加载父视图中的嵌套的视图作为默认

是平均粗例子本质上有内每两个主要途径有哪些主机嵌套视图的容器。我想加载一个默认视图到他们而不必点击一个ui-sref。

<h1>Auth Panel</h1> <-- main route 1 
Just a container for login/forgot/reset 
<hr/> 
<a ui-sref="auth.login">Show Login</a><br> <-- can click to load nested view, but want to autoload 
How to show automatically /login within the panel <br> 
without having to click show login? 
<div ui-view></div> <-- child to autoload with /login 

感谢

+3

https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-set-up-a-defaultindex-child-state – 2014-10-04 20:59:50

+0

谢谢,这是伟大的。不知道我是如何错过的。 – mtpultz 2014-10-04 22:38:01

回答

12

在你的父母状态添加PARAM

.state('parentState', { 
//... 
    params: { 
     autoActivateChild: 'parentState.childState' 
    } 
//... 
}) 

并把这个地方

$rootScope.$on('$stateChangeSuccess', function(event, toState){ 
    var aac; 
    if(aac = toState && toState.params && toState.params.autoActivateChild){ 
     $state.go(aac); 
    } 
}); 
+0

$ state在哪里定义? – HappyCoder 2015-02-20 21:07:27

+0

梦幻般的解决方案。清洁。 – Tyguy7 2015-05-07 16:47:44

+0

HappyCoder,它需要只要您有事件处理(第二码块)被注入。大概在模块定义 – 2015-09-14 14:51:20

-1

如果你想在自动定位到一个默认的子状态父母的负荷,你可以触发特定ui-sref一个点击控制LER。

angular.element("#childElementId").trigger('click'); 
+0

请不要扔人关角路...你给任何意见之前,了解该工具。 – 2016-08-26 12:35:32