有時候在使用template模板時又使用了列表渲染,而後又想把index
值和數據一同傳入data
<!-- test/test-template/test-template.wxml --> <template name="stdInfo"> <view> <!-- 這裏用到了index --> <text>{{index + 1}} </text> <text>{{title}}</text> <text> {{name}}</text> </view> </template>
<!--pages/test/test.wxml--> <import src="./test-template/test-template.wxml" /> <view> <template is="stdInfo" wx:for="{{stdInfo}}" data="{{...stdInfo[index]}}"></template> </view>
// pages/test/test.js Page({ data: { stdInfo: [ { name: "lostexin", age: 21, gender: "m", title: "老子是魔法少女" }, { name: "afei", age: 21, gender: "m", title: "邪王真眼" } ] } })
想要index
從外部傳入,而不想寫在js文件的data
中(即從後端獲取過來,填充到data
裏)
首先說明一下擴展運算符,它是ES6的語法,它的做用是「 將一個數組轉爲用逗號分隔的參數序列」
console.log(...[1, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 [...document.querySelectorAll('div')] // [<div>, <div>, <div>]
注: ES2018將這個運算符引入了對象,因此也能夠對對象這麼整,參考:阮一峯老師《ES6入門》數組擴展和對象擴展章節es6
改寫代碼,以下
<!--pages/test/test.wxml--> <import src="./test-template/test-template.wxml" /> <view> // 注意最後兩個花括號和前面的花括號要隔開,否則會報錯 <template is="stdInfo" wx:for="{{stdInfo}}" data="{{...stdInfo[index], ...{index: index, name: item.name} }}"></template> </view>
最後輸出結果