Reputation: 416
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.
Upvotes: 15
Views: 18823
Reputation: 123901
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:
Upvotes: 31
Reputation: 2116
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})'
Upvotes: 8