在 $state.go 中将对象作为参数传递 [英] Pass object as parameter in $state.go
问题描述
我想导航到另一个状态/屏幕并将一个简单的 json 对象传递到下一个屏幕.
I want to navigate to another state/screen and pass a simple json object to this next screen.
我有以下几点:
var benefit = { "x": "y"};
$state.go('pages.claimed', { 'benefit': benefit });
我的状态如下:
.state('pages.claimed', {
url: '/claimed',
views: {
'page': {
templateUrl: 'templates/pages/claimed.html'
}
}
})
但是我无法访问福利";pages.claimed 视图中的对象/参数.我正在使用基于角度的离子框架.
I can't however access the "benefit" object/parameter in the pages.claimed view. I'm using the ionic framework based on angular.
推荐答案
Parse object to json:
var benefit = angular.toJson({ "x": "y"});
在状态参数中定义变量:
.state('pages.claimed', {
url: '/claimed?params',
views: {
'page': {
templateUrl: 'templates/pages/claimed.html'
}
}
})
通过$stateParams
从控制器访问变量:
var benefit = angular.fromJson($stateParams.benefit);
此处完整文档
有几种方法可以将对象从 url 传递给控制器:
There are several ways to pass an object to controller from url:
通过查询参数:
定义选项 url: '/yoururl?a&b&c'
,
传递变量yoururl?a=1&b=2&c=3
通过网址参数:
定义选项 url: '/yoururl/:a/:b/:c',
传递变量yoururl/1/2/3
对于更复杂的情况,您可以将对象解析为 json 字符串并使用 base64 进行编码
对象:{ a:1, b:2, c:3 }
JSON 字符串:{"a":1,"b":2,"c":3}
Base64 编码字符串:eyJhIjoxLCJiIjoyLCJjIjozfQ==
Object: { a:1, b:2, c:3 }
JSON String: {"a":1,"b":2,"c":3}
Base64 Encoded string: eyJhIjoxLCJiIjoyLCJjIjozfQ==
定义选项 url: '/yoururl?params'
传递变量yoururl?params=eyJhIjoxLCJiIjoyLCJjIjozfQ==
更多关于 base64 的信息
More info about base64
这篇关于在 $state.go 中将对象作为参数传递的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!