使用ui路由器和参数

使用ui路由器和参数

问题描述:

我有一个名为products的页面,列出了使用ng-repeat列出的产品。对于每个产品,他们每个链接都使用<a>标签。我希望每个链接都将用户发送到products/item?productid=xxx,其中xxx代表每个特定项目的ID。使用ui路由器和参数

使用UI路由器,我怎么去使用<a>一个GET参数发送给products/item,我如何使用UI路由器来检测GET参数和加载项的数据(例如名称,描述)进项目的页面控制器。

我读过https://github.com/angular-ui/ui-router/wiki/URL-Routing所以如果我设置

$stateProvider 
.state('products.item', { 
    url: "/products/:productid", 
    templateUrl: 'products.item.html', 
    controller: function ($stateParams) { 
     // If we got here from a url of /contacts/42 
     expect($stateParams).toBe({contactId: "42"}); 
    } 
}) 

我怎么设置线路expect($stateParams).toBe({contactId: "42"});什么?

我正在用PHP做这个。在PHP中,我不得不将<a>更改为<button>并触发表单提交。然后使用$ _GET,我会用参数调用另一个PHP脚本并解析JSON响应。但是,我想将其更改为单个页面,因此不会有整页重新加载。

您有错误的属性名称。它需要匹配您在状态定义对象的url属性中定义的值。所以,如果你有

url: "/products/:productid", 

你的状态定义,那么如果你去的产品/ 42',你应该能够访问该值在$ stateParams用..

expect($stateParams).toBe({productid: "42"}); 
+0

如果我有多产品像1-100,我需要做一个'期望($ stateParams).toBe({productid:“42”});'从1-100每个项目? –

+0

我该如何为它设置一个默认值,以便当用户在没有GET参数的情况下键入'http:// www.blahblah.com/products/item'时,它会将它们重定向到其他地方? –

+0

您不需要将expect()调用放在任何地方。这只是为了证明您在需要时可以访问该信息。 –