Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   траблы с роутингом (https://javascript.ru/forum/angular/56770-trably-s-routingom.html)

Boogie1989 03.07.2015 17:05

траблы с роутингом
 
Есть роуты
.state('category', {
            url: '/:category',
            views: {
                'items': {
                    templateUrl: 'Views/content.html',
                    controller: 'categoryCtrl'
                },
         
                 'items2': {
                     templateUrl: 'Views/SubCategory.html',
                     controller: 'categoryCtrl'
                 },
            }
            
        })
         .state('category.subcategory', {
             url: '/:subcategory',
             views: {
                 'items2': {
                     templateUrl: 'Views/SubCategory.html',
                     controller: 'categoryCtrl'
                 },
                
             }
         })

и есть два линкаЖ
1.
<a ui-sref="category({ category: item.product_Category})" >{{item.product_Category}}</a>

получается url #/category
2.
<a ui-sref="category.subcategory({subcategory: SubItem.SubName })" </a>

получается url #/category/subcategory

При нажатии на первый роут работает чьотко, при нажатии на второй одна вью должна поменятся на другу но этого не делает. Как исправить?

Boogie1989 08.07.2015 15:25

народ, хелп, очень нужно!

Tek 08.07.2015 16:34

Попробуйте так:
<a ui-sref="category.subcategory({category: item.product_Category, subcategory: SubItem.SubName })" </a>

Boogie1989 09.07.2015 19:53

я думаю пробрема не в ui-sref, а в самом роуте, так как по логике код должен быть такой
.state('category.subcategory', {

             url: '/:category/:subcategory',
             views: {
                 'items2': {
                     templateUrl: 'Views/SubCategory.html',
                     controller: 'categoryCtrl'
                 }        
       })

но в таком случаи category в url дублируется и получается url #/category/category/subcategory, а в варианте приведенном мной ниже строка получается правильной #/category/subcategory но роут не срабатывает и я ни как не могу понять в чем причина(

Tek 10.07.2015 08:19

Нет ваш первый вариант правильный, т.к. вы используйте вложенные состояния (category.subcategory). Множите написать какого какого вида формируется url.

Boogie1989 10.07.2015 11:16

Чуток не понял вопроса. Постараюсь описать ситуацию подробнее.
У меня есть два ng-repeat которые перебирают category и subcategory и в каждом есть кнопка с ui-sref и методом. То есть при нажатии на первую у меня открывается один список и url получается localhost/#/category срабатывает первый роут и открывается content.html. При нажатии на вторую, к localhost/#/category добавляется subcategory (localhost/#/category/subcategory) но роут не срабатывает, то есть не видит второй параметр.

Boogie1989 15.07.2015 20:48

как всегда решение оказалось довольно простым:
.state('category', {
            url: '/:category',
            views: {04
                'items': {
                  templateUrl: 'Views/content.html',
                    controller: 'categoryCtrl'
                },
                 'items2': {
                     templateUrl: 'Views/SubCategory.html',
                     controller: 'categoryCtrl'
                 },
            }
        })

         .state('category.subcategory', {
             url: '/:subcategory',
             views: {
                 'items2@': {
                     templateUrl: 'Views/SubCategory.html',
                     controller: 'categoryCtrl'
                 },                
             }
         })

всего лишь добавить @ к 'items2' в .state('category.subcategory' ))


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