在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 小程序把狀態(tài)改變后view沒有做到相應的改變怎么辦?

小程序把狀態(tài)改變后view沒有做到相應的改變怎么辦?

問題描述

小程序把狀態(tài)改變后view沒有做到相應的改變怎么辦?

問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法

如果把 ‘true’判斷單獨為數(shù)組可以

相關代碼

view

<block wx:for="{{list}}" wx:key="id">

<view class='keys-box'>
  <text class='keyTop'>{{item.page}}</text>
  <view class='keys_ul_content'>
    <block wx:for="{{item.pages}}" wx:key="id" wx:for-item="page">
      <view class="item-text {{page.state ? 'active':'' }}" data-index="{{index}}" bindtap="{{item.mun === 0 ? 'bindViewTap' : 'bindTap' }}" >
        {{page.name}} 
        {{page.state}}         
      </view>
    </block>
  </view>
</view>

</block>

數(shù)組

list: [{

  page: "未出貨異常",
  mun:0,
  pages: [{
    name: "未出貨異常",
    state: true
  }, {
    name: "商品卡住了",
    state: false
  }, {
    name: "商品未出貨",
    state: false
  }, {
    name: "其他",
    state: false
  }]
}, {
  page: "機器異常",
  mun: 1,
  pages: [{
    name: "機器損壞",
    state: false
  }, {
    name: "機器異常不出貨",
    state: false
  }, {
    name: "售貨機缺貨",
    state: false
  }, {
    name: "商品信息有誤",
    state: false
  }, {
    name: "其他",
    state: false
  }]
}],

js

bindViewTap: function(e) {

var that = this;
let index = e.target.dataset.index;
var state = that.data.list[0].pages[index].state;
var updateStatusArr = that.data.list[0].pages.slice(0);
updateStatusArr[index].state = !state
that.setData({
  state: updateStatusArr
})
console.log(state)

},

結果

clipboard.png

js已經(jīng)改變但是頁面一直沒變

回答
編輯回答
苦妄

你先用小程序開發(fā)工具里面有個監(jiān)視每個頁面data的窗口看看,data里的值有無變化

建議不要用 var that=this,你這邊沒有嵌套函數(shù)作用域,建議用箭頭函數(shù)。

在你改變state之后,應該將你那個改變后的數(shù)組,用setData,改變你原來data中定義的數(shù)組。

2017年11月13日 05:57
編輯回答
夢若殤

沒辦法了...把判斷單獨寫出來了

數(shù)組

statusArr: [false, false, false, false],
statusArrt: [false, false, false, false, false]

單選

cliTap:function(e){

let index = e.target.dataset.index;
let mun = this.data.mun;
var stateArrTxt = this.data.stateArrtTxt;
var txt = this.data.list[1].pages[index].name
stateArrTxt.splice(0,1,txt)
this.setData({
  mun:index
})
console.log(stateArrTxt)

},

多選

bindTap: function(e) {

let index = e.target.dataset.index;
var updateStatusArrt = this.data.statusArrt.slice(0); //復制新數(shù)組
updateStatusArrt[index] = !this.data.statusArrt[index];
this.setData({
  statusArrt: updateStatusArrt
})

},

view

<block wx:for="{{list}}" wx:key="id">

<view class='keys-box'>
  <text class='keyTop'>{{item.page}}</text>
  <view class='keys_ul_content'>
    <block wx:for="{{item.pages}}" wx:key="id" wx:for-item="page">
      <view class="item-text {{ item.mun === 0 ? (statusArr[index] ? 'active':'') : (statusArrt[index] ? 'active':'')  }}" data-index="{{index}}" bindtap="{{item.mun === 0 ? 'bindViewTap' : 'bindTap' }}" >
        {{page.name}}   
      </view>
    </block>
  </view>
</view>

</block>

2018年9月13日 04:05