Подтвердить что ты не робот

UI-Router Как автоматически загружать вложенный вид в родительском представлении по умолчанию

Я играл с UI-Router, так как ngRoute не совсем покрывает то, что мне нужно, на основе разных макетов, требующих нескольких вложенных представлений. То, что я не могу понять в UI-Router, заключается в том, как загрузить стандартные вложенные представления по умолчанию, не нажимая на ссылку. Я создал грубый пример того, что я имею в виду в plunker

По существу в каждом из двух основных маршрутов есть контейнер, в котором размещаются вложенные представления. Я хочу загрузить представление по умолчанию в них, не нажимая 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

Спасибо

4b9b3361

Ответ 1

В своем родительском состоянии добавьте параметр

.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);
    }
});

Ответ 2

Если вы хотите автоматически перейти к дочернему состоянию по умолчанию при загрузке родителя, вы можете вызвать щелчок на этом конкретном ui-sref в вашем контроллере.

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