W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
在組件上使用 a:for 屬性可以綁定一個數(shù)組,即可使用數(shù)組中各項的數(shù)據(jù)重復(fù)渲染該組件。
數(shù)組當(dāng)前項的下標(biāo)變量名默認(rèn)為 index,數(shù)組當(dāng)前項的變量名默認(rèn)為 item。
<view a:for="{{array}}">
{{index}}: {{item.message}}
</view>
Page({
data: {
array: [{
message: 'foo',
}, {
message: 'bar',
}],
},
});
使用 a:for-item 可以指定數(shù)組當(dāng)前元素的變量名。使用 a:for-index 可以指定數(shù)組當(dāng)前下標(biāo)的變量名。
<view a:for="{{array}}" a:for-index="idx" a:for-item="itemName">
{{idx}}: {{itemName.message}}
</view>
a:for
支持嵌套。 以下是九九乘法表的嵌套示例代碼。
<view a:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" a:for-item="i">
<view a:for="{{[1, 2, 3, 4, 5, 6, 7, 8, 9]}}" a:for-item="j">
<view a:if="{{i <= j}}">
{{i}} * {{j}} = {{i * j}}
</view>
</view>
</view>
與 block a:if
類似,可以將 a:for
用在 <block/>
標(biāo)簽上,以渲染一個包含多節(jié)點的結(jié)構(gòu)塊。
<block a:for="{{[1, 2, 3]}}">
<view> {{index}}: </view>
<view> {{item}} </view>
</block>
如果列表項位置會動態(tài)改變或者有新項目添加到列表中,同時希望列表項保持特征和狀態(tài)(比如 <input/>
中的輸入內(nèi)容,<switch/>
的選中狀態(tài)),需要使用 a:key
來指定列表項的唯一標(biāo)識。
a:key
的值以兩種形式來提供:
*this
,代表列表項本身,并且它是唯一的字符串或者數(shù)字,比如當(dāng)數(shù)據(jù)改變觸發(fā)重新渲染時,會校正帶有 key
的組件,框架會確保他們重新被排序,而不是重新創(chuàng)建,這可以使組件保持自身狀態(tài),提高列表渲染效率。注意:
a:key
,會報一個 warning。下面是示例代碼:
<view class="container">
<view a:for="{{list}}" a:key="*this">
<view onTap="bringToFront" data-value="{{item}}">
{{item}}: click to bring to front
</view>
</view>
</view>
Page({
data:{
list:['1', '2', '3', '4'],
},
bringToFront(e) {
const { value } = e.target.dataset;
const list = this.data.list.concat();
const index = list.indexOf(value);
if (index !== -1) {
list.splice(index, 1);
list.unshift(value);
this.setData({ list });
}
},
});
key
是比 a:key
更通用的寫法,里面可以填充任意表達式和字符串。
注意: key
不能設(shè)置在 block 上。
下面是示例代碼:
<view class="container">
<view a:for="{{list}}" key="{{item}}">
<view onTap="bringToFront" data-value="{{item}}">
{{item}}: click to bring to front
</view>
</view>
</view>
Page({
data:{
list:['1', '2', '3', '4'],
},
bringToFront(e) {
const { value } = e.target.dataset;
const list = this.data.list.concat();
const index = list.indexOf(value);
if (index !== -1) {
list.splice(index, 1);
list.unshift(value);
this.setData({ list });
}
},
});
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: