使用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"});
如果我有多产品像1-100,我需要做一个'期望($ stateParams).toBe({productid:“42”});'从1-100每个项目? –
我该如何为它设置一个默认值,以便当用户在没有GET参数的情况下键入'http:// www.blahblah.com/products/item'时,它会将它们重定向到其他地方? –
您不需要将expect()调用放在任何地方。这只是为了证明您在需要时可以访问该信息。 –