在小程序項目中遇到一個問題:數據分成四五個小組,然后要進行小組切換,切換的同時把button的樣式也要改變,以前Dom操作的時候特別簡單,
現在在小程序中竟不知從何下手,后面參照了這邊博文:http://blog.csdn.net/kelisentian/article/details/72793158,功能也能夠實現了,下面做下記錄:
wxml代碼:
1 <view wx:for="{{Object}}" wx:key="Object" wx:for-index="key" wx:for-item="value"> 2 <view class="flex-item"> 3 <button bindtap="changeGroup" data-groupid="{{value.id}}" data-id="{{key}} type="{{key == id ? 'primary' : 'default'}}"> {{value.name}}</button> 4 </view> 5 </view>
css代碼:
1 .flex-item button { 2 height: 32px; 3 box-sizing: border-box; 4 text-align: center; 5 margin: 10px 0 0 0; 6 min-width: 50px; 7 font-size: 16px; 8 line-height: 32px; 9 }
js代碼:
1 data:{ 2 id:'' 3 }
1 changeGroup: function(event){ 2 var id = event.currentTarget.dataset.id; 3 ..... 4 this.setData({ 5 id: id 6 }); 7 }
結果:
默認為“全部”:
可任意切換其他button:
另外,值得注意的是,從數據庫里面取出的數據並沒有"全部"這一個對象,而是在請求數據成功之后再添加進去,並且這個對象的下標為是0,這樣的設置默認button的樣式比較好定義
代碼參考:
1 changeGroup: function(event){ 2 var Object = []; 3 wx.request({ 4 url:'', 5 header:{}, 6 data:{}, 7 method:"", 8 success: function(res){ 9 if(res.data.state == 'success'){ 10 if(res.data.group.length >0){ 11 var obj = {}; 12 obj.id = ''; 13 obj.name = '全部'; 14 Object.push(obj); 15 } 16 for(var i = 0; i<res.data.group.length; i++){ 17 var o= {}; o.id = res.data.group[i].id; 18 o.name = res.data.group[i].name; 19 Object.push(o); 20 } 21 that.setData({ 22 Object: Object, 23 }); 24 } 25 }) 26 }
好了。。。