微信小程序页面跳转传参填充数据的小案例

把index.wxml中data-postid的值,传给detail.wxml的案例:

目录结构:

目录结构
目录结构

1、在index.wxml中为需要传值的列表绑定属性和值,并为该列表绑定一个点击函数:

    <block wx:for="{{newsData}}" wx:for-item="newsItem" wx:key="*this">
      <view class="news-item" data-postid="{{newsItem.listId}}" catchtap="goDetail" >
        <template is="indexTemplate" data="{{...newsItem}}" />
      </view>
    </block>

注意:
- indexTemplate 是引用的模板
- data- 后面的属性不能是 驼峰式(如:postId),必须是小写的,否则会报错!!!!
- goDetail是传参用的函数

2、在index.js中获取index.wxml中的postid的值,并使用wx.navigateTo({ })传递给news-detail.wxml页面

    var newsDataList = require("../../data/index-data.js");

    Page({
        onLoad: function (option) {
            this.setData({
                newsData: newsDataList.dataList
            })
        },
        goDetail: function (event) {
                var postId = event.currentTarget.dataset.postid;
                wx.navigateTo({
                  url: 'news-detail/news-detail?id='+postId
                  })
            }
    })

3、在detail.js中接收index.js页面跳转时传递过来的值

    // 此页面也需要引入 本地模拟的数据文件
    // 在页面加载时获取传递过来的值,一定要写参数option
    // dataList 是模拟的本地数据列表,是一个对象
    // 我们需要的是把当前这一项列表中的数据传递出去,所以取的是对象中的一个

    var newsDataList = require("../../../data/index-data.js");

    Page({
        onLoad: function(option) {
                var postId = option.id;
                var postData = newsDataList.dataList[postId];
                this.setData({
                    postData: postData
                });
         }
    })

-注意两个 require 的引用路径! 不然会跳坑的!

4、在news-detail.wxml进行绑定

        <text class="news-title">{{postData.title}}</text>
        <text class="name">{{postData.name}}</text>

附:模拟数据用的 index-data.js:

    // 模拟的本地数据
    var news_data = [
        {
            listId: "0",
            avatar: "/images/avatar/9.jpg",
            name: "岸芷汀兰",
            date: "2017年3月5日",
            title: "香港二手楼价再创历史新高 新一轮升浪有望展开",
            newsImg: "/images/post/fangzhi.jpg",
            content: "有香港二手楼价“风向标”之称的“中原城市领先指数CCL”再创历史新高,最新报147.74点,按周上升0.62%,较2015年9月的高点再涨0.56%。其中,大户型单位价格连升三周,按周升0.56%;中小户型单位价格创出历史新高,按周升0.63%。"
        },
        {
            listId: "1",
            avatar: "/images/avatar/10.jpg",
            name: "面包没有面包屑",
            date: "2017年2月13日",
            title: "迪丽热巴十年前旧照曝光",
            newsImg: "/images/post/reba.png",
            content: "近日,有网友通过微博曝光迪丽热巴10年前广州演出时的照片,附文称:“你还记得在广州的演出吗?”\n\n照片中,迪丽热巴身穿一身喜庆的大红新疆民族服饰,充满异域风情。\n\n随后,网友纷纷围观并留言称:“好青涩的时候!”“笑容如阳光!”“笑的好灿烂!”",
            review: "58",
            look: "109"
        }
    ];
    //  \n\n是换行
    module.exports = {
        dataList: news_data
    }

附:indexTemplate模板

    <template name="indexTemplate">
      <view class="user-info">
        <image class="avatar" src="{{avatar}}"></image>
        <text class="name">{{name}}</text>
        <text class="date">{{date}}</text>
      </view>
      <view class="news">
        <text class="news-title">{{title}}</text>
        <image class="news-img" src="{{newsImg}}"></image>
        <text class="news-content">{{content}}</text>
      </view>
      <view class="reviewAndCollect">
        <view>
          <image src="../../images/icon/review.png"></image>
          <text>{{review}}</text>
        </view>
        <view>
          <image src="../../images/icon/look.png"></image>
          <text>{{look}}</text>
        </view>
      </view>
    </template>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值