Jqk

在逐梦的路上,总会有人的梦想枯萎,只有提升自我才可以涅槃重生

0%

小程序实践(四)–页面带参传值、JSON数据传递

小程序实践(四)–页面带参传值、JSON数据传递

今天呢写了一个(物流跟踪)列子,将通过这个例子来向大家介绍一下小程序是如何带参跳转、JSON数组的传递与解析。先看下效果图:
在这里插入图片描述
让我们来看一下本次案例中运用到的函数
1)页面跳转的方法:

1
2
3
4
5
wx.navigateTo({
url: '../logistics/logistics?dataList=' + dataList,

})

2)我们在参数传递的时候数据中可能会有一些特殊字符,例如 ;/? : @ &=+$,#所以我们需要用函数将其进行编码,也就是下面所说的两个函数  

1
2
3
encodeURIComponent ();  //函数把字符串编码为 URI 组件。有了编码自然也会有相对的解码函数

decodeURIComponent();//函数可把字符串作为 URI 组件进行解码。

3)在传递json的时候,我们需要将其转换为字符串传值,而接收的时候我们需要将json转换为对象接收,那就用到了下面的两个函数:

1
2
JSON.stringify();//将json转成字符串传值
JSON.parse();//将字符串转成对象接收

4)我们接收解析好的JSON如何展示在页面中呢,小程序中一般多用setData方法改变页面信息或者是刷新之后与后台交互获取最新信息。

1
2
3
this.setData({
参数:值
})

以上就是这次案例所用到的函数及方法,最后附上代码,便于大家参考:
一级页面传参:

1
<view bindtap='logisiticsGZFn' class="logisi">查看物流</view>   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**查看物流 */
logisiticsGZFn: function(e) {
var Traces= [{//JSON模拟数据,项目中可以换取真实的
"time": "2014/06/25 08:05:37",
"context": "正在派件..(派件人:邓裕富,电话:18718866310)[深圳 市]",
"Remark": null
},
{
"time": "2014/06/25 04:01:28",
"context": "快件在 深圳集散中心 ,准备送往下一站 深圳 [深圳市]",
"Remark": null
},
{
"time": "2014/06/25 01:41:06",
"context": "快件在 深圳集散中心 [深圳市]",
"Remark": null
},
{
"time": "2014/06/24 20:18:58",
"context": "已收件[深圳市]",
"Remark": null
},
{
"time": "2014/06/24 20:55:28",
"context": "快件在 深圳 ,准备送往下一站 深圳集散中心 [深圳市]",
"Remark": null
},
{
"time": "2014/06/25 10:23:03",
"context": "派件已签收[深圳市]",
"Remark": null
},
{
"time": "2014/06/25 10:23:03",
"context": "签收人是:已签收[深圳市]",
"Remark": null
}
];
var dataList=encodeURIComponent(JSON.stringify(Traces));//函数可把字符串作为 URI 组件进行编码
wx.navigateTo({
url: '../logistics/logistics?dataList=' + dataList,//传递参数

})
}

二级页面接收展示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<view class='page_row top'>
<image class="goods" src='../images/sf.jpg'></image>
<view class='page_clu logistics'>
<text>物流公司: 顺丰速运{{wuliuType}}</text>
<text>物流单号:221009887344 {{wl_dh}}</text>
<text>官方电话:95338 {{wl_phone}}</text>
</view>
</view>
<view class='br'></view>
<view class="middle">
<view class="top_sh" hidden="true">
<view class='top_icon'></view>
<text class="address">[收货地址]{{userAddress}}</text>
<view class='on' style="border-left:1px dashed #d0d0d0;"></view>
</view>
<block wx:for="{{Traces}}" wx:key="index" hidden="{{isShowWl}}">
<view class='order'>
<text class="time">{{item.time}}</text>
<view class='icon {{0==index?"in":"no_in"}}'></view>
<view class='logistics_centent page_clu'>
<text> {{item.context}}</text>
</view>
<view wx:if="{{index==Traces.length-1}}"></view>
<view wx:else class='on'></view>
</view>
</block>
</view>
1
2
3
4
5
6
7
8
9
10
/**
* 生命周期函数--监听页面加载
*/
onLoad: function(options) {
var dataTemp = decodeURIComponent(options.dataList);//函数可把字符串作为 URI 组件进行解码。
var Traces = JSON.parse(dataTemp);//航一页传过来的json字符串转化成json数组 物流信息进度
this.setData({
Traces: Traces
})
}

以上便是案例完整的代码,粘贴复制即用。最后说一下,所有的页面获取的数据都需要在onLoad()方法中执行。

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!