首先,我使用ui-router。
实际上我已将 slug 传递给states
并且它完美无缺,正如您所见:
.state('pages', {
url: '/:slug',
template: '<page-content></page-content>'
})
<a ui-sref="pages({ slug: item.slug })" title="{{item.title}}" ng-repeat="item in $ctrl.menu_items">{{ item.title }}</a>
这样我就可以在$stateParams
和URL中获取slu .. 但是,我想发送整个object
并使用 slug 保留网址。
下面你可以看到我的尝试:
的config
州:
.state('pages', {
url: 'obj.slug', // -> What should I put here? (of course /:slug doesn't work anymore)
template: '<page-content></page-content>',
params: { obj: null }
})
HTML:
<a ui-sref="pages({ obj: item })" title="{{item.title}}" ng-repeat="item in $ctrl.menu_items">{{ item.title }}</a>
它正在努力将整个对象传递到状态(我可以使用$stateParams
获取),但是我无法动态生成URL。
object
的一个例子:
{
id: 6480,
title: "Test",
slug: "test"
}
所以,问题是:
有没有办法使用object
从params
的属性生成 url (就像我正在做的那样)?例如:&#39; site.com/test'? (test
是我想要放入网址的slug
答案 0 :(得分:1)
重新加载后,您无法更改网址定义。你想要做类似的事情
.state('pages', {
url: '/pages/:slug', // -> What should I put here?
template: '<page-content></page-content>',
params: { obj: null }
})
然后使用&#34; slug&#34;部分来确定从那里去哪里,可能来自resolve属性,它允许你将对象注入你的控制器。
修改强>
也许这更像是你正在寻找的东西。
.state('pages', {
url: '/:pageName'
template: '<page-content></page-content>',
params: { obj: null }
})
然后你改变状态
$state.go('pages', {pageName: item.Name, obj: item});
我不确定你是如何使用ui-sref在锚标签上做的那样。也许这个?
<a ui-sref="pages({pageName: item.Name, obj: item})"