我正在使用1.x版本的UI-Router。我有一个按位置分解的网站,每个位置的页面布局和内容相同:
mysite.com
mysite.com/location1
mysite.com/location1/about
mysite.com/location1/contact
mysite.com/location2
mysite.com/location2/about
mysite.com/location2/contact
我想为页面(关于,联系)等使用相同的模板/组件,但是根据参数更改我的API查询。我使用位置网址参数设置状态,如下所示:
.state('about', {
url: '/:location/about',
params: {
location: 'default'
}
})
我真正希望能做的不是提供某种默认的位置参数,我希望它完全是可选的 - 就像下面的网址一样:
mysite.com/about
mysite.com/contact
它将提供默认值(但不会显示在URL中)。我希望像ui-sref
这样的其他指令以相同的方式工作。我应该可以使用:
ui-sref="about({location: something})"
如果something
为null或falsy,则会显示缩短的网址。像ui-sref-active
这样的其他指令应该足够聪明,以便识别默认值。
有可能吗?提前谢谢!
答案 0 :(得分:1)
有更详细的说明:
要点是 - 必须精确定义参数,以便让UI-Router明确决定:“它是参数吗?还是下一部分(例如/ about)”
以上链接的摘录:
.state('root', {
url: '/{lang:(?:en|he|cs)}',
abstract: true,
template: '<div ui-view=""></div>',
params: {lang : { squash : true, value: 'en' }}
})
因此,lang
参数的值很容易区分UI-Router与其他值。使用squash
选项添加了更多魔法。查看更多here