离子框架,如何在状态中传递多个param对象?

时间:2015-01-14 09:23:36

标签: javascript angularjs angular-ui-router ionic-framework

我想在 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]}

我怎么能以正确的方式做到这一点?

非常感谢您的任何建议。

2 个答案:

答案 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编码)。