Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   траблы с ui-router, а точнее с $stateParams (https://javascript.ru/forum/angular/57907-trably-s-ui-router-tochnee-s-%24stateparams.html)

Boogie1989 25.08.2015 23:16

траблы с ui-router, а точнее с $stateParams
 
Есть вот такой вот линк
ui-sref="anon.items.category({category:pane.product_Category })" ng-click="getCategoryId(pane.product_Category)"

который добавляет в строку .../category и вызывает метод который должен отослать в Api данные с category. Так вот, в этом методе $stateParams при первом нажатии выдает undefined, а при втором, ту категорию которую выбирали в первый раз. В чём проблема? Кто знает, кто поможет?

NugzarGaguliya 11.09.2015 09:52

Использовать вместе ui-sref & ng-click не лучшая практика

Если вам нужно выполнять какие-то действия по перехду на стейт, то объявите в этом стейте контроллер и выполняйте все нужные операции там.

MetaDriver 19.09.2015 21:00

Цитата:

Сообщение от NugzarGaguliya (Сообщение 388120)
Использовать вместе ui-sref & ng-click не лучшая практика

Если вам нужно выполнять какие-то действия по перехду на стейт, то объявите в этом стейте контроллер и выполняйте все нужные операции там.

Таки бывают случаи, когда нужно выполнить какие-то действия ДО перехода на указанный стейт, в контексте контроллера текущего стейта, а не нового. Например, дабы не цеплять к контроллеру целевого стейта избыточную для него инфраструктуру (сервисы, переменные текущего контроллера и т.п.). У нас в проекте уже неоднократно вставал вопрос о написании ещё одной директивы для ui-router'а, которая бы сначала выполняла указанную функцию, а потом уже переходила по ссылке. (но пока руки не дошли. возможно когда-нибудь..).
ng-click, вызывающий функцию, в конце которой вызывается $state.go(...) - не вполне подходит по СЕО соображениям, ибо не генерит ссылку (href) в DOM-элементе. (Для индексации сайта поисковиками используем phantomJS, генерирующий статические копии "ангулар-страниц". Ну и... фантом не настолько умён, чтоб самостоятельно добыть ссылку из js-кода, да ещё и динамичски генерируюмую роутером из имени стейта... )


Часовой пояс GMT +3, время: 18:40.