欢迎光临,了解微信小程序开发,就上易用通!

for循环,绑定点击事件

发布:2018-01-25 09:18浏览: 来源:网络 作者:tianshu

最近公司有小程序的项目,本人有幸参与其中,一个项目做下来感觉受益匪浅,与大家做下分享,欢迎沟通交流互相学习。

先说一下此次项目本人体会较深的几个关键点:微信地图、用户静默授权、用户弹窗授权、微信充值等等。

言归正传,今天分享我遇到的关于wx:for循环绑定数据的一个tips:

想必大家的都知道wx:for,如下就不用我啰嗦了:

 

  1. <view class="myNew" wx:for="{{list}}">{{item.title}}<view>{{item.content}}</view></view> (item即为数组list的每一个子元素)

但是,如果循环体内绑定一个点击事件,点击时如何把子元素的内容传进来呢? 如下:

 

  1. list:[
  2.  
  3. { "id" : 01 ,
  4.  
  5. "title" : "第一个标题",
  6.  
  7. "content":"第一个内容"},
  8.  
  9. { "id" : 02 ,
  10.  
  11. "title" : "第二个标题",
  12.  
  13. "content":"第二个内容"},
  14.  
  15. { "id" : 03 ,
  16.  
  17. "title" : "第三个标题",
  18.  
  19. "content":"第三个内容"}
  20.  
  21. ]

上面的例子变成如下:

 

  1. <view class="myNew" wx:for="{{list}}">{{item.title}}<view bindtap="readDetail">{{item.content}}</view></view>

需要触发readDetail事件时,取到对应的id调接口查看详情。

可是小程序又不允许事件名后直接注入id参数。

其实,小程序早就想到这一点了,提供了一个 data-any (any任意类型) 方法,此处有借鉴H5中 data- 任意属性的妙处。

(小程序给出了示例: data-index,大家可以自行研究。)

可以写成如下:

 

  1. <view class="myNew" wx:for="{{list}}">{{item.title}}<view bindtap="readDetail" data-id="{{item.id}}">{{item.content}}</view></view>

js文件:

 

  1. readArticle:function(e){
  2.  
  3. var $id = e.currentTarget.dataset.id; //打印可以看到,此处已获取到了对应的id
  4.  
  5. })

同理:也可以写成如下:

 

  1. <view class="myNew" wx:for="{{list}}">{{item.title}}<view bindtap="readDetail" data-id="{{item.id}}" data-title="{{item.title}}" data-content="{{item.content}}">{{item.content}}</view></view>

js中:

 

  1. readArticle:function(e){
  2.  
  3. var $data = e.currentTarget.dataset; //打印可以看到,此处已获取到了包含id、title、和content的对象
  4.  
  5. wx.navigateTo({
  6. url: '../myNewsInfo/myNewsInfo?id'+$data.id+"&title="+$data.title+"&content="+$data.content //传参跳转即可
  7. })
  8.  
  9. })
  10.  




免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。