美文网首页
微信小程序传参——tab选项卡的几种实现方式

微信小程序传参——tab选项卡的几种实现方式

作者: 向上而活 | 来源:发表于2018-12-20 22:00 被阅读0次

    版本(一):需要定义多个函数,代码冗余

    <view class="container">
      <view class='up'>
        <view bindtap='fun1'>新闻</view>
        <view bindtap='fun2'>财经</view>
        <view bindtap='fun3'>体育</view>
      </view>
      <view class='down'>
        <view style='display:{{d1}}'>新闻1</view>
        <view style='display:{{d2}}'>财经2</view>
        <view style='display:{{d3}}'>体育3</view>
      </view>
    </view>
            data: {
        d1: 'block',
        d2: 'none',
        d3: 'none',
      },
      fun1: function () {
        var that = this;
        that.setData({
          d1: 'block',
          d2: 'none',
          d3: 'none',
        })
      },
      fun2: function () {
        var that = this;
        that.setData({
          d1: 'none',
          d2: 'block',
          d3: 'none',
        })
      },
      fun3: function () {
        var that = this;
        that.setData({
          d1: 'none',
          d2: 'none',
          d3: 'block',
        })
      },
    

    版本(二)

    <view class="container">
      <view class='up'>
        <view id='a1' bindtap='fun'>新闻</view>
        <view id='a2' bindtap='fun'>财经</view>
        <view id='a3' bindtap='fun'>体育</view>
      </view>
      <view class='down'>
        <view style='display:{{d1}}'>新闻1</view>
        <view style='display:{{d2}}'>财经2</view>
        <view style='display:{{d3}}'>体育3</view>
      </view>
    </view>
            data: {
        d1: 'block',
        d2: 'none',
        d3: 'none',
      },
      fun: function (e) {
        var that = this;
        var targets = e.currentTarget.id;
        if(targets=='a1'){
          that.setData({
            d1: 'block',
            d2: 'none',
            d3: 'none',
          })
        } else if (targets == 'a2'){
          that.setData({
            d1: 'none',
            d2: 'block',
            d3: 'none',
          })
        } else if (targets == 'a3'){
          that.setData({
            d1: 'none',
            d2: 'none',
            d3: 'block',
          })
        }
      },
    

    利用e对象中的currentTarget.id的值,确认点击对象。虽然只定义一个函数,但是,判断量大,代码冗余。而且id值只能是字母开头的,不灵活,可以用currentTarget.dataset传递任意类型的参数

    <view data-a='1' bindtap='fun'>新闻</view>
    fun: function (e) {
        var targets = e.currentTarget.dataset.a;
    console.log(targets);//输出1
    }
    

    版本(三)

    <view class='up'>
        <view data-t='0' bindtap='fun'>新闻</view>
        <view data-t='1' bindtap='fun'>财经</view>
        <view data-t='2' bindtap='fun'>体育</view>
      </view>
      <view class='down'>
        <view style='display:{{arr[0]}}'>新闻1</view>
        <view style='display:{{arr[1]}}'>财经2</view>
        <view style='display:{{arr[2]}}'>体育3</view>
      </view>
            data: {
        arr: ['block', 'none', 'none']
      },
      fun: function (e) {
        var that = this;
        var targets = that.data.arr;
        for (var i = 0; i < targets.length; i++) {
          targets[i] = 'none';
        }
        targets[e.currentTarget.dataset.t] = 'block';
        that.setData({
          arr: targets
        })
      },
    

    版本(四)

     <view class="container">
      <view class='up'>
        <view data-t='0' bindtap='fun'>新闻</view>
        <view data-t='1' bindtap='fun'>财经</view>
        <view data-t='2' bindtap='fun'>体育</view>
      </view>
      <view class='down'>
        <view wx:if='{{p==0}}'>新闻1</view>
         <view wx:if='{{p==1}}'>财经2</view>
          <view wx:if='{{p==2}}'>体育3</view>
      </view>
    </view>
                 data: {
        p:0
      },
      fun: function (e) {
        var that = this;
        that.setData({
          p: e.currentTarget.dataset.t
        })
      },
                    <view wx:if='{{p==0}}'>新闻1</view>
         等于
    <block wx:if='{{p==0}}'>
        <view>新闻1</view>
    </block>
    

    版本(五)

     <view class="container">
      <view class='up'>
        <view wx:for="{{array}}" class="brr{{index}}" data-t="{{index}}" bindtap="fun">{{item}}</view>
      </view>
      <view class='down'>
        <view wx:if='{{p==0}}'>新闻1</view>
         <view wx:if='{{p==1}}'>财经2</view>
          <view wx:if='{{p==2}}'>体育3</view>
      </view>
    </view>
            data: {
        array: ['新闻', '财经', '体育'],
        p:0
      },
      fun: function (e) {
        var that = this;
        that.setData({
          p: e.currentTarget.dataset.t
        })
      },
    

    wx:for 循环在标记内可以使用{{item}}指代对应的下标里面的值。可以使用{{index}}表示下标。如果想自定义用别的名字表示下表,可以这样重置:wx:for-index="j" wx:for-item="k"

    相关文章

      网友评论

          本文标题:微信小程序传参——tab选项卡的几种实现方式

          本文链接:https://www.haomeiwen.com/subject/xmaukqtx.html