Динамически построенный атрибут ui-sref в ui-router

Я новичок в angular и особенно ui-router.

Вот ссылка:

<a ui-sref="/topic/{{topic.id}}">SomeText</a>

Ссылка динамически заполнена.

Итак, когда я пытаюсь получить доступ к этому состоянию из моего config следующим образом:

 .state('topics/:topicId',{
        url:"",
        templateUrl: "",
        controller: ""
    })

Я получаю это сообщение об ошибке:

Ошибка: не удалось разрешить '/themes/myTopic' из государственных тем

В приведенном выше примере: myTopic - это имя переменной.

Ответы

Ответ 1

Ты почти там. Просто параметр должен быть частью определения URL, а не именем состояния:

.state('topics',{
    url: '/{id:[0-9]{1,8}}', // we can also add some constraint, like int id only
    templateUrl: "",
    controller: ""
 })

И как его называть (где currentItem.id будет динамически вводиться как часть некоторого ng-repeat)

<a ui-sref="topics({id:currentItem.id})">SomeText</a>

Потому что ui-sref означает: ui-sref='stateName({param: value, param: value}). Подробнее здесь:

Ответ 2

Попробуйте использовать простое имя для состояния 'topics' и используйте 'topics/:topicId' как свойство URL. После этого вы можете использовать ui-sref='topics({topicId: topic.id})'