|
導(dǎo)讀微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應(yīng)用,它實現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應(yīng)用。小程序是一種不用下載就能使用的應(yīng)用,也是一... 微信小程序,簡稱小程序,英文名Mini Program,是一種不需要下載安裝即可使用的應(yīng)用,它實現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應(yīng)用。小程序是一種不用下載就能使用的應(yīng)用,也是一項門檻非常高的創(chuàng)新,經(jīng)過將近兩年的發(fā)展,已經(jīng)構(gòu)造了新的小程序開發(fā)環(huán)境和開發(fā)者生態(tài)。 教程接微信小程序開發(fā)教程(基礎(chǔ)篇)7-數(shù)據(jù)綁定上,當(dāng)需要展示一組數(shù)據(jù)時,可以使用wx:for//.wxml
<view wx:for="{{array}}">
{{index}}: {{item.message}}
</view>
//.js
age({
data: {
array: [{
message: 'foo',
}, {
message: 'bar'
}]
}
})其中 <view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
{{idx}}: {{itemName.message}}
</view>也可以嵌套使用,如下面是一個九九乘法表 <view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i">
<view wx:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="j">
<view wx:if="{{i <= j}}">
{{i}} * {{j}} = {{i * j}}
</view>
</view>
</view>類似 <block wx:for="{{[1, 2, 3]}}">
<view> {{index}}: </view>
<view> {{item}} </view>
</block>wx:key要理解為什么需要 //.wxml
<checkbox wx:for="{{objectArray}}" value="{{item.name}}" style="display: block;"> {{item.name}} </checkbox>
<button bindtap="addToFront">在上方添加一個新的check組件</button>
//.js
Page({
data: {
objectArray: [
{id: 1, name: '我沒有被選中'},
{id: 2, name: '我沒有被選中'},
],
},
addToFront: function(e) {
const length = this.data.objectArray.length
this.data.objectArray = [{id: length, name: '我沒有被選中'}].concat(this.data.objectArray)
this.setData({
objectArray: this.data.objectArray
})
},
})上面的代碼創(chuàng)建了兩個checkbox組件和一個按鈕,當(dāng)點擊按鈕會在最上方新增一個
這里寫圖片描述 點擊按鈕,界面如下:
這里寫圖片描述 ok,到這里一切正常 ,為了更好的說明問題,加入checkbox選中事件的處理,當(dāng)checkbox被選中時,將文字修改為"我被選中了",相關(guān)代碼如下: //wxml
<checkbox-group bindchange="checkboxChange">
<checkbox wx:for="{{objectArray}}" value="{{item.id}}" style="display: block;" > {{item.name}}
</checkbox>
</checkbox-group>
<button bindtap="addToFront">在上方添加一個新的check組件</button>
//js
Page({
data: {
objectArray: [
{id: 1, name: '我沒有被選中'},
{id: 2, name: '我沒有被選中'},
],
},
addToFront: function(e) {
const length = this.data.objectArray.length
this.data.objectArray = [{id: length + 1, name: '我沒有被選中'}].concat(this.data.objectArray)
this.setData({
objectArray: this.data.objectArray
})
},
checkboxChange: function(e){
console.log('checkboxChange')
const length = this.data.objectArray.length
let checkBoxArray = this.data.objectArray
for (let i = 0; i < length; i++) {
let ischecked = false
for (let j = 0; j < e.detail.value.length; j++){
if (checkBoxArray[i].id == e.detail.value[j]){
checkBoxArray[i].name = '我被選中了'
ischecked = true
}
}
if (!ischecked){
checkBoxArray[i].name = '我沒有被選中'
}
}
this.setData({
objectArray: this.data.objectArray
})
}
})當(dāng)選中第一個checkbox時,界面如下
這里寫圖片描述 這時如果點擊添加組件按鈕會怎樣呢,期望的效果應(yīng)該如下
這里寫圖片描述 然而實際效果確是下圖這樣的
這里寫圖片描述 可以看到渲染引擎并沒有將選中的效果和數(shù)據(jù)綁定起來,導(dǎo)致出現(xiàn)了預(yù)期之外的結(jié)果。如果想要達到預(yù)期效果,就要使用 <checkbox-group bindchange="checkboxChange">
<checkbox wx:for="{{objectArray}}" wx:key = "id" value="{{item.id}}" style="display: block;" > {{item.name}}
</checkbox>
</checkbox-group>
<button bindtap="addToFront">在上方添加一個新的check組件</button>將.wxml文件修改為上述代碼所示,就可以實現(xiàn)預(yù)期效果,重點就在
上面引用自微信官方教程。除了用于保持視圖組件的狀態(tài)外,使用
以上就是小程序開發(fā)基礎(chǔ)篇之?dāng)?shù)據(jù)綁定下(8)的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章! 小程序是一種不需要下載安裝即可使用的應(yīng)用,它實現(xiàn)了應(yīng)用“觸手可及”的夢想,用戶掃一掃或者搜一下即可打開應(yīng)用。 |
溫馨提示:喜歡本站的話,請收藏一下本站!