微信小程序--切换tab并携带数据的三种实现方式

初学小程序,今天遇到了一个小坑,总结一下。我想要实现的效果是:点击文章进入文章详情。

标注:首页对应的是index相关文件,详情对应的是logs相关文件。

一共有三种实现方式:switchTab方法、navigateTo方法、navigator方法。

1、switchTab方法要实现的效果如图:



所需要的代码:

a、在index.wxml中写如下代码:
    <view class='article' bindtap='itemClick' data-artId='111222'>文章1</view>
b、在app.js中添加全局变量,代码如下:
     globalData: {
userInfo: null,
artid:null
}
c、在index.js中点击“文章1”的 itemClick方法中,写如下代码:
itemClick:function(event){
console.log(event);
var artId = event.currentTarget.dataset.artid;//获取到 artid的值
app.globalData.artid = artId;//设置全局变量(app已经定义 var app=getApp())
console.log('app.globalData.artId为:' + app.globalData.artid);
wx.switchTab({
url: '../logs/logs' //这个地址为详情页地址
})
}
d、在logs.js中获取到该id,代码如下:
        data: {
artId:null
},
onLoad: function (options) {
         console.log(app.globalData.artid);
     var that = this;
    that.setData({ artId: app.globalData.artid});
},
e、在logs.wxml中写如下代码:
        <view class="container log-list">
文章详情内容...文章id是:{{artId}}
        </view>

下面介绍使用navigateTo方法和navigator方法,这两种方式与第一种不同。

使用这两种方式要注意的是:TabBar中的list项的配置pagePath,尽量不要作为其他页面的跳转链接。

附图来表示区别:

使用switchTab方式的app.json如图:


使用navigateTo方法和navigator方法的app.json如图:


2、使用navigateTo方法实现的效果如图:


a、在index.js中点击“文章1”的方法中,写如下代码:
itemClick:function(event){
wx.navigateTo({
url: '../logs/logs?id=100',
})
}
b、在logs.js中获取到该id,代码如下:
    data: {
articleId: null,
title:null
},
onLoad: function (options) {
    console.log('options' + options);
     console.log('id:' + options.artid);
     console.log('title:' + options.title);
     this.setData({ articleId: options.id, title: options.title});
},
c、在logs.wxml中写如下代码:
<view class="container log-list">
文章详情内容...文章id是:{{ articleId}};文章标题是:{{title}}
</view>

3、使用navigator方法实现的效果如图:


a、在index.wxml中写如下代码:
<navigator url='../logs/logs?id=1111&title=标题'>
<view class='article' bindtap='itemClick' >文章1</view>
</navigator>
b、在logs.js中获取到该id,代码如下:
        data: {
articleId: null,
title:null
},
onLoad: function (options) {
     console.log('options' + options);
     console.log('id:' + options.artid);
     console.log('title:' + options.title);
     this.setData({ articleId: options.id, title: options.title});
},
c、在logs.wxml中写如下代码:
<view class="container log-list">
文章详情内容...文章id是:{{ articleId}};文章标题是:{{title}}
</view>


猜你喜欢

转载自blog.csdn.net/scy_fighting/article/details/80829220