我想在 state.go 方法中传递两个对象:
$state.go('app.home', {
playSavedPlaylist:true,
playlistData: dataToPass
});
州app.home如下:
.state('app.home', {
url: '/home:playSavedPlaylist:playlistData',
views: {
'menuContent' :{
templateUrl: 'templates/home.html',
controller: 'HomeCtrl'
}
}
})
但如果我试图使用params:
console.log($stateParams);
我总是得到以下:
Object {playSavedPlaylist: "true[object Object]", playlistData: ""}
但应该是:
Object {playSavedPlaylist: "true", playlistData: [object Object]}
我怎么能以正确的方式做到这一点?
非常感谢您的任何建议。
答案 0 :(得分:2)
您可以添加'/'来分隔参数。 url参数也只能是整数和字符串,因此对象必须转换为json,或者不包含在url中。
.state('app.home', {
url: '/home/:playSavedPlaylist/:playlistData',
views: {
'menuContent' :{
templateUrl: 'templates/home.html',
controller: 'HomeCtrl'
}
}
});
$state.go('app.home', {
playSavedPlaylist:true,
playlistData: angular.toJson(dataToPass)
}
//, { location: false, inherit: false} <-- will exclude parameters from url
);
答案 1 :(得分:0)
什么是dataToPass
?一个对象?
您无法直接在URL中传递对象,因此您应该使用服务来获取所需的数据,您只能传递整数(例如:id,max,min)和字符串。 t包含URL的禁用字符(您可以使用URI编码)。