我有一个带url参数的状态。 类似的东西:
.state('MyState', {
url: '/contacts/{personName}',
templateUrl: '/app/templates/contacts.html',
controller: 'ContactsController',
params: {
personName: null
}
})
现在,我想使用$state.go
语法,并能够使用参数将personName
参数传递给网址。
例如,如果我打电话:
$state.go('MyState', {personName: 'john'});
地址栏会显示:http://localhost:8080/#!/contacts/john
现在地址栏显示http://localhost:8080/#!/contacts/,我不知道如何强制网址包含personName
。除此之外它工作正常。
答案 0 :(得分:1)
只需在状态定义中使用默认值添加参数即可。您的州仍可以拥有网址值。
$stateProvider.state('MyState', {
url : '/url',
templateUrl : "/app/templates/contacts.html",
controller : 'ContactsController',
params: {personName: 'defaultName'}
});
并将参数添加到$ state.go()并导航
$state.go('MyState',{personName: "MIT"});
请参阅:$state.go() with Parameter
希望它有帮助..!
答案 1 :(得分:0)
在你的州定义中,当你定义“params”时,你不必在url中添加param,所以替换:
url: '/contacts/{personName}',
url: '/contacts',
答案 2 :(得分:0)
定义状态时使用以下语法
.state('myState', {
url: '/contacts/:personName',
templateUrl: '/app/templates/contacts.html',
controller: 'ContactsController',
params: {
personName: {
array: false
}
}
})
注意:"人名在网址中显示"