ui-router-extras с динамическими вкладками

Кристопер,

Мне было интересно, будет ли вариант использования динамически генерируемых вкладок, подумайте о списке клиентов, работать с вашим решением для вкладок в дополнительных функциях ui-router? Проблема в том, что в вашем примере используются именованные представления пользовательского интерфейса, которые не будут работать в моей ситуации, поскольку они генерируются во время выполнения, а добавленные вами маршруты — во время настройки.

Заранее спасибо, Луиш


person Luisz Bobirca    schedule 25.09.2014    source источник


Ответы (1)


Вы можете динамически генерировать состояния, просто используя $stateProvider в своем контроллере и имя пользовательского интерфейса в представлении, связывающем имя

<div ui-view="myView{{variable}}"></div>

Возникла проблема с использованием интерполированных представлений, но устранена, начиная с версии 0.2.12 (загрузить до последней версии 0.2.13, если она не работает) и здесь является примером, но без ui-router-extras. Дайте нам знать, если он работает нормально, или обновите файл plnkr.

person Matias Fernandez Martinez    schedule 03.04.2015
comment
Мато, спасибо за ответ. Проблема в том, что у вас все еще есть два жестко запрограммированных состояния step1 и step2 в $stateProvider. Мне нужно создать динамическое состояние, связанное с динамической вкладкой. - person Luisz Bobirca; 06.04.2015
comment
Но вы можете добавить новые состояния в любой момент, единственное, что вам нужно сделать, это создать службу, которая будет вызывать $stateProvider, вы можете проверить несколько примеров здесь - person Matias Fernandez Martinez; 07.04.2015
comment
Да, я изучал это вчера, но это не очень хороший способ узнать, какие состояния вам нужно загрузить. Все дело в том, что вы можете настроить шаблон, и когда вы вызываете state.go или копируете URL-адрес в браузер, он будет следовать маршруту. Я не знаю, какие данные пользователь выберет заранее. Что мне действительно нужно, так это пользовательский интерфейс для каждого используемого маршрута и способ в $stateProvider связать имя представления с переменной, как это делает ui-router для URL-адреса: '/step/{number}' . - person Luisz Bobirca; 07.04.2015
comment
Я думаю, что это больше проблема дизайна. Вы можете использовать часть URL-адреса в качестве stateParams, например, url: '/myParent/myVuew/{selectedTabId:[a-zA-Z0-9.]+}', а затем в вашем контроллере с $stateParams вы можете извлечь значение этого selectedTabId, например, и отобразить что-то или запустить другое вложенное представление - person Matias Fernandez Martinez; 07.04.2015
comment
Мато, моя цель - сохранить DOM в отдельном представлении пользовательского интерфейса. Представьте себе список клиентов слева и детали для каждого справа. Вы хотите переключаться между клиентами и не терять состояние клиентов, которые вы редактируете в данный момент. Это вариант использования. Мы хотим использовать ui-router для этого, чтобы мы могли гидратировать клиента, если кто-то откроет его с URL-адресом или в коде, вызвав $state.go. - person Luisz Bobirca; 08.04.2015