当前位置: 首页 >>常用API接入 >>微信小程序 >>微信小程序中template共享模板的使用

微信小程序中template共享模板的使用

时间:2018/10/31 7:02:48 【admin】

微信小程序中template共享模板的使用…

小程序官方使用简介

模板

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。


定义模板

使用 name 属性,作为模板的名字。然后在内定义代码片段,如:


<!--

  index: int

  msg: string

  time: string

-->

<template name="msgItem">

  <view>

    <text> {{index}}: {{msg}} </text>

    <text> Time: {{time}} </text>

  </view>

</template>

1

2

3

4

5

6

7

8

9

10

11

使用模板

使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如:


    <template is="msgItem" data="{{...item}}"/>

    Page({

      data: {

        item: {

          index: 0,

          msg: 'this is a template',

          time: '2017-10-2'

        }

      }

    })


is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板:


    <template name="odd">

      <view> odd </view>

    </template>

    <template name="even">

      <view> even </view>

    </template>


    <block wx:for="{{[1, 2, 3, 4, 5]}}">

        <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/>

    </block>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

模板的作用域

模板拥有自己的作用域,只能使用data传入的数据。


这里写图片描述


项目中封装使用

模板

一、定义模板

1、新建一个template文件夹用来管理项目中所有的模板;


2、新建一个templateList.wxml文件来定义模板;


3、使用name属性,作为模板的名字。然后在内定义代码片段。


注意:

a.可以看到一个.wxml文件中可以定义多个模板,只需要通过name来区分;


b.模板中的数据都是展开之后的属性。


<template name="templateLeft">

    <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="templateRight">

    <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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

二、使用模板

1、使用 is 属性,声明需要的使用的模板


<import src="templates/templateList.wxml"/>

2、将模板所需要的 data 传入,一般我们都会使用列表渲染。


<block wx:for="{{courseList}}">

    <template is="{{index%2 === 0 ? 'templateLeft' : 'templateRight'}}" data="{{...item}}"></template>

</block>


注意:

a.可以通过表达式来确定使用哪个模板is=”{{index%2 === 0 ? ‘templateLeft’ : ‘templateRight’}}” 

或者通过wx:if来确定。index是数组当前项的下标。


<template wx:if="{{index%2 === 0}}" is="courseLeft" data="{{...item}}"></template>

<template wx:else is="courseRight" data="{{...item}}"></template>


b. data 是要模板渲染的数据,data=”{{…item}}” 写法是ES6的写法,item是wx:for当前项,… 是展开运算符,在模板中不需要再{{item.courseName}} 而是直接{{courseName}} 。


三、模板样式

1、在新建模板的时候同时新建一个templateList.wxss 的文件,与CSS同样的写法控制样式。


2、在需要使用模板的页面 .wxss文件中import进来;或者直接在app.wxss中引入,这样只需要一次引入,其他文件就不用引入了。


@import "template/templateList.wxss";


为什么要使用template模板呢?这里写图片描述


答: 因为我们在项目中会遇到很多公共的元素或者模块,并且这些模块可能会被在多个页面中使用。 

所有我们为了节省劳动力,于是就将这个元素或者模块封装起来,在其他页面使用时,直接进行调用。

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-15 http://www.yuyanba.com

分享按钮