15

I am new to angular and especially ui-router.

Here is a link:

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

The link is dynamically populated.

So when I try to access that state from my config like this:

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

I get this error message:

Error: Could not resolve '/topics/myTopic' from state 'topics'

In the above: myTopic is a variable name.

2 Answers 2

31

You are almost there. Just the parameter must be part of the URL definition, not the name of the state:

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

And how to call it (where currentItem.id would be injected dynamically as a part of some ng-repeat)

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

Because ui-sref means: ui-sref='stateName({param: value, param: value}). More info here:

Sign up to request clarification or add additional context in comments.

3 Comments

Explanation was nice. More importantly thanks for the docs link.
Great if that helped anyhow ;) Enjoy Angular ui-router, awesome feature ;)
Hey I have one more question. Take a look at it here : stackoverflow.com/questions/23500923/…
8

Try to use a simple name for state as 'topics' and use 'topics/:topicId' as url property. After that you can use ui-sref='topics({topicId: topic.id})'

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.