如(ru)下圖,我在做華企商學院小程(cheng)序的時候,課程(cheng)搜索結(jie)果頁和課程(cheng)列表頁結(jie)構是完(wan)全一(yi)樣(yang)的,這時就非(fei)常適合使用(yong)模板(ban)來(lai)完(wan)成頁面搭建(jian)(jian)。實現一(yi)次(ci)定(ding)義,到處使用(yong)。一(yi)、定(ding)義模板(ban)1、新(xin)建(jian)(jian)一(yi)個templ ...
如(ru)下圖,我(wo)在做華(hua)企商學院(yuan)小程(cheng)(cheng)序(xu)的時候(hou),課程(cheng)(cheng)搜索結(jie)(jie)果頁和課程(cheng)(cheng)列表頁結(jie)(jie)構是完全一樣的,這時就非(fei)常適合使用模板(ban)來完成頁面(mian)搭建。實現一次定(ding)義,到處(chu)使用。


1、新建一個template文件夾用來管理項目中所有的模板;
2、新建一個courseList.wxml文件來定義模板;
3、使用name屬性,作(zuo)為模(mo)板的名(ming)字(zi)。然后在內定(ding)義(yi)代(dai)碼片(pian)段。
注(zhu)意:
a.可以看到一個.wxml文件中可以定義多個模板,只需要通過name來區分;
b.模板中的(de)數據都是展開之后(hou)的(de)屬性。
<template name="courseLeft"><navigator url="../play/play?courseUuid={{courseUuid}}&isCompany={{isCompany}}"><view class="item mr26"><image src="{{imagePath}}" mode="aspectFill"></image><view class="course-title"><text class="title">{{courseName}}</text><text class="author">- {{teacherName}}</text></view><view class="course-info clearfix"><view class="fl"><text class="play">{{playCount}}</text></view><view class="fr"><text class="grade">{{score}}</text></view></view><view wx:if="{{studyProgress}}" class="tip-completed">{{studyProgress}}</view></view></navigator></template><template name="courseRight"><navigator url="../play/play?courseUuid={{courseUuid}}&isCompany={{isCompany}}"><view class="item"><image src="{{imagePath}}" mode="aspectFill"></image><view class="course-title"><text class="title">{{courseName}}</text><text class="author">- {{teacherName}}</text></view><view class="course-info clearfix"><text class="play fl">{{playCount}}</text><text class="grade fr">{{score}}</text></view><view wx:if="{{studyProgress}}" class="tip-completed">{{studyProgress}}</view></view></navigator></template>1、使(shi)用 is 屬性,聲明需要的使(shi)用的模板(ban)
<import src="../../templates/courseList.wxml"/>2、將模板所需(xu)要的 data 傳入,一般我們都會使用(yong)列(lie)表渲染。
<block wx:for="{{courseList}}"><template is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}" data="{{...item}}"></template></block>注意: a.可以(yi)通過表(biao)達式來(lai)確定使用哪個模板(ban)is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}" 或者(zhe)通過wx:if來(lai)確定。index是數(shu)組當前項(xiang)的下標。
<template wx:if="{{index%2 === 0}}" is="courseLeft" data="{{...item}}"></template><template wx:else is="courseRight" data="{{...item}}"></template>b. data 是(shi)(shi)要(yao)模(mo)板渲(xuan)染的數(shu)據,data="{{...item}}" 寫法(fa)是(shi)(shi)ES6的寫法(fa),item是(shi)(shi)wx:for當前項,... 是(shi)(shi)展開運算符,在(zai)模(mo)板中不需(xu)要(yao)再{{item.courseName}} 而(er)是(shi)(shi)直接{{courseName}} 。
1、在新建模(mo)(mo)板(ban)的時候同(tong)時新建一個(ge)courseList.wxss 的文件,與CSS同(tong)樣的寫(xie)法(fa)控(kong)制樣式。 2、在需要(yao)使(shi)用模(mo)(mo)板(ban)的頁(ye)面 .wxss文件中import進來;或者直接在app.wxss中引(yin)入,這樣只需要(yao)一次(ci)引(yin)入,其他文件就(jiu)不(bu)用引(yin)入了。
@import url("../template/courseList.wxss");