$ stateParams将值转换为字符串

时间:2015-11-12 13:56:46

标签: javascript angularjs angular-ui-router ui-sref

我正在使用UI-Router。这是我通过ui-sref路由的州之一:

.state("community", {
    url: "/community/:community_id",
    controller: "CommunityCtrl",
    templateUrl: "/static/templates/community.html"
})

在我的一个模板中,我去的地方'社区'状态:

<div ui-sref="community({community_id: community.community_id})"></div>

这是我的社区对象:

{
    name: 'Community name',
    community_id: 11 //int, not a string
}

正如您所见,关键字&#39; community_id&#39;包含int值而不是字符串值。但是,当我通过$stateParams访问此参数时,我得到:

community_id: "11" //string

为什么我会收到一个字符串?

1 个答案:

答案 0 :(得分:11)

community_id 作为数字(int)的最简单方法是将该参数声明为int - {community_id:int} < / p>

.state("community", {
    url: "/community/{community_id:int}",
    controller: "CommunityCtrl",
    templateUrl: "/static/templates/community.html"
})

查看有关.state() setting url的文档:

  

带有可选参数的url片段。当状态被导航或转换到时,$stateParams服务将填充所有传递的参数。

     

(有关可接受模式的详情,请参阅UrlMatcher UrlMatcher}

     

的示例:

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}"