3

В настоящее время я изучаю возможность настройки ui-router для следующего сценария. Было бы здорово, если бы у кого-то была идея, как этого добиться.Несколько состояний на одной странице с ui-router

У меня есть простой один макет пейджера с навигацией. Каждый элемент навигации имеет поле div с содержимым. Как я могу теперь определить несколько состояний на одной странице (для каждого элемента навигации одно состояние с отдельным контроллером и шаблоном)?

Впоследствии я хотел бы реализовать решение, когда я нажимаю на элемент навигации, чтобы перейти к соответствующему контейнеру div. В основном это делается с помощью якорей HTML, но как я могу решить это с помощью ui-router? Или это невозможно, и мне нужно создать одно состояние с отдельными видами?

Ниже пример изображения, чтобы показать вам разыскиваемого расположение:

Example layout

Надеюсь кто-то есть решение для этого.

Спасибо заранее,
xyNNN

ответ

0

С Ui-маршрутизатор вы можете иметь несколько представлений на одной странице. Таким образом, вы будете иметь возможность сделать что-то вроде этого:

$stateProvider 
.state('main',{ 
    views: { 
    'contentSite1': { 
     templateUrl: 'site1.html', 
     controller: function($scope){} 
    }, 
    'contentSite2': { 
     templateUrl: 'site2.html', 
     controller: function($scope){} 
    }, 
    'contentSite3': { 
     templateUrl: 'site3.html', 
     controller: function($scope){} 
    }, 
    } 
}); 

Вот ссылка с более подробным объяснением https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views

+0

Чтобы быть в состоянии иметь несколько представлений я сознаю. Но могу ли я теперь определить активное состояние для моего элемента навигации, когда вид (например, contentSite2) не отображается в текущем порт представления? знаете ли вы какое-то решение для этого? – xyNNN

+0

У вас может быть какая-то директива, которая проверяет текущую позицию окна просмотра, и на основе этого вы можете просто добавить активный класс в меню. –

+0

Вы можете просто сделать следующее: '' ng-class = "{active: $ state.is ('contentSite2')} '' ' – harshil