小程序遇到的問題:報錯Setting data field "num" to undefined is invalid.

寫view點擊添加移除class樣式時,遇到報錯,時靈時不靈的。
報錯之前的寫法
由於是同一個選擇又需分開展示,因此數據沒有寫在js裏面。

WXML

<view class="border">
          <view class="{{num == 1?'active':'act'}} conts" data-num="1" data-price="20" bindtap="clickNum">
            <view>20元</view>
            <text>200個號</text>
          </view>
        </view>
        <view class="border">
          <view class="{{num == 2?'active':'act'}} conts" data-num="2" data-price="50" bindtap="clickNum">
            <view>50元</view>
            <text>500個號</text>
          </view>
        </view>

JS

data:{
num:0
},
//點擊效果
clickNum: function (e) {
    this.setData({
      num: e.target.dataset.num
    })
    console.log(e.target.dataset.price)
  }

WXSS

.act{border: 1px solid #dedede;}
.act view{color: #999;}

.active{color: #33cccc;border: 1px solid #33cccc;}
.active view{color: #33cccc;}

此種寫法出來的效果隨緣,一會可以一會不可以,上網搜索之後發現,view點擊事件的子級也許添加相對應的屬性纔可以。
WXML修改後的寫法

<view class="border">
          <view class="{{num == 1?'active':'act'}} conts" data-num="1" data-price="20" bindtap="clickNum">
            <view data-num="1" data-price="20">20元</view>
            <text data-num="1" data-price="20">200個號</text>
          </view>
        </view>
        <view class="border">
          <view class="{{num == 2?'active':'act'}} conts" data-num="2" data-price="50" bindtap="clickNum">
            <view data-num="2" data-price="50">50元</view>
            <text data-num="2" data-price="50">500個號</text>
          </view>
        </view>

在子級添加對應的data-num,添加data-price是爲了傳值,不需要可刪掉。
修改後不再報錯,點擊效果和傳值都正常,至於問題的源頭不清楚。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章