在ui-router教程https://plnkr.co/edit/jbZgIg?p=info中,他们将一个参数 personId 传递给该状态。
ui-sref="people.person({ personId: person.id })"
状态是:
{
name: 'people.person',
url: '/{personId}',
component: 'person',
resolve: {
person: function(people, $stateParams) {
return people.find(function(person) {
return person.id === $stateParams.personId;
});
}
}
}
我正在研究一个示例,其中我想传递2个参数(1个使用url可见,第二个隐藏,这将是用户无法在url中看到的id)。类似于:
ui-sref="people.person({ personId: person.id, personUri : person.uri })"
我希望国家成为这样的东西(但它没有用!):
{
name: 'people.person',
url: '/{personUri}',
component: 'person',
resolve: {
person: function(people, $stateParams) {
return people.find(function(person) {
return person.id === $stateParams.personId;
});
}
}
}
如州所示,我想在网址中使用 personUri ,我希望将 personId 传递给人服务。
答案 0 :(得分:1)
你可以使用params
.state('other', {
url: '/:personUri',
params: {
personUri:"",
// this param is not part of url
// it could be passed with $state.go or ui-sref
personId: "",
}
...
答案 1 :(得分:0)
不是在url参数中传递对象,而是通过传入对象来调用控制器的函数,然后在控制器本身中对该对象执行任何操作,然后在其中调用服务。
示例:
$scope.func = function info(person){
console.log(person);
PeopleService.xyz(person).then(function(response){
console.log('Service called')
})
}
在html中称之为:
<button ng-click="func(person)"> Click me</button>