在$ stateParams网址

时间:2015-12-03 01:29:43

标签: javascript angularjs angular-ui-router

我试图在我的网址中传递一个对象作为参数,但我得到了这个奇怪的形式。

  

http://localhost:8080/#/%5Bobject%20Object%5D => [object Object]

下面是关于我如何发送对象的代码。

var user = {"user":item};
$state.go("myState",user);

在我的路线

.state('myState',{
   url: "/:user",
   templateUrl: "user.html",
   controller: 'User',                  
});

当我尝试访问查看用户页面时,我得到上面的网址,而且无法通过$stateParams.user访问数据,因为它是一个字符串[object Object]

我使用ui-router版本v0.2.15,角度为1.3.4

1 个答案:

答案 0 :(得分:1)

如果您只是想将一个对象从一个状态的控制器传递给另一个状态,则不能使用URL状态参数,因为这些参数必须是字符串才能在URL中工作。

您可以使用params状态配置属性。

$stateProvider.state('myState', {
    url: 'whatever',
    templateUrl: 'user.html',
    controller: 'User',
    params: {
        user: null
    }
});

现在你可以转换到myState状态并传递一个复杂的对象

$state.go('myState', {user: item});

并且您的User控制器可以引用$stateParams.user