我想知道是否可以在angular ui路由器中的stateParams内传递JSON对象。到目前为止,当我尝试传递一个对象时,我会记录它并获得“[object Object]”。
我做了一些研究,发现了这个主题:AngularJS: Pass an object into a state using ui-router 但是,没有一个答案适合我。
到目前为止,我已经尝试过了:
<a ui-sref="profile({user: data})"></a>
其中:
.state('profile', {
url: "/profile/:user",
templateUrl: "profile/profile.html",
controller: "ProfileCtrl",
params : { user: null }
})
有什么想法吗?
EIDT: 和变量数据看起来应该是这样的:
{
"_id": "5612d4f138cf125420331d1e",
"index": 0,
"guid": "2fa8a98f-902e-4dfd-a8ac-24e3fdc52d8c",
"isActive": false,
"balance": "$3,957.95",
"picture": "xxxxx",
"age": 23,
"eyeColor": "brown",
"name": "xxxxxxx",
"gender": "female",
"company": "xxxx",
"email": "xxxx@xxxx.xxx",
"phone": "xxxxx",
"address": "xxxxx"}
我从浏览器获得的链接是以下“http://localhost:8888/#/profile/%5Bobject%20Object%5D”
到目前为止,这是对我有用的技巧:
使用
ng-click =“goToProfile(data)”
而不是ui-sref,函数是
$scope.goToProfile= function(data){
var object = data;
$state.go('profile', {user: object}) ;
};
答案 0 :(得分:0)
我相信你正确传递了这个对象。问题是你使用console.log来记录浏览器中的对象,该浏览器只显示打印[object Object]的对象引用(已知IE的版本可以做到这一点)。
您可以使用 console.dir 代替 console.log (explained here)或将您的对象包装在 JSON.stringify 中将对象显示为字符串。你也可以使用不同的浏览器控制台(想到镀铬)或输出html模板中的对象,如下所示:
.controller('ProfileCtrl', function($stateParams) {
var vm = this;
vm.user = $stateParams.user;
})
在你的模板中:
<div ng-controller="ProfileCtrl as vm">
<pre>{{vm.userObj|json}}</pre>
</div>