问题
I am using UI-Router
. Here's one of my state to which I am routing via ui-sref
:
.state("community", {
url: "/community/:community_id",
controller: "CommunityCtrl",
templateUrl: "/static/templates/community.html"
})
In one of my templates from where I go to 'community' state:
<div ui-sref="community({community_id: community.community_id})"></div>
Here's my community object:
{
name: 'Community name',
community_id: 11 //int, not a string
}
As you can see the key 'community_id' contains an int value rather than string value. However, when I access this parameter via $stateParams
I get:
community_id: "11" //string
Why am I getting a string?
回答1:
The easiest way to get community_id
as number (int) is to declare that param as int
- {community_id:int}
.state("community", {
url: "/community/{community_id:int}",
controller: "CommunityCtrl",
templateUrl: "/static/templates/community.html"
})
Check the doc about .state() setting url:
A
url
fragment with optional parameters. When a state is navigated or transitioned to, the$stateParams
service will be populated with any parameters that were passed.(See UrlMatcher UrlMatcher} for more details on acceptable patterns )
examples:
url: "/home" url: "/users/:userid" url: "/books/{bookid:[a-zA-Z_-]}" url: "/books/{categoryid:int}" url: "/books/{publishername:string}/{categoryid:int}" url: "/messages?before&after" url: "/messages?{before:date}&{after:date}" url: "/messages/:mailboxid?{before:date}&{after:date}"
来源:https://stackoverflow.com/questions/33673113/stateparams-converting-value-to-string