微信小程序 template模板详解及实例代码


Posted in Javascript onMarch 09, 2017

微信小程序 template模板详解

如下图,我在做华企商学院小程序的时候,课程搜索结果页和课程列表页结构是完全一样的,这时就非常适合使用模板来完成页面搭建。实现一次定义,到处使用。

微信小程序 template模板详解及实例代码微信小程序 template模板详解及实例代码

模板

一、定义模板

1、新建一个template文件夹用来管理项目中所有的模板;
2、新建一个courseList.wxml文件来定义模板;
3、使用name属性,作为模板的名字。然后在<template/>内定义代码片段。

注意:

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

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

<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、使用 is 属性,声明需要的使用的模板

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

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

<block wx:for="{{courseList}}">
  <template is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}" data="{{...item}}"></template>
</block>

注意:

a.可以通过表达式来确定使用哪个模板is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}"

或者通过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、在新建模板的时候同时新建一个courseList.wxss 的文件,与CSS同样的写法控制样式。

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

@import url("../template/courseList.wxss");

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JavaScript实际应用:innerHTMl和确认提示的使用
Jun 22 Javascript
短信提示使用 特效
Jan 19 Javascript
一个cssQuery对象 javascript脚本实现代码
Jul 21 Javascript
js 在定义的时候立即执行的函数表达式(function)写法
Jan 16 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
jQuery中extend函数详解
Jul 13 Javascript
JavaScript小技巧整理篇(非常全)
Jan 26 Javascript
angularjs $http调用接口的方式详解
Aug 13 Javascript
webpack 3.X学习之多页面打包的方法
Sep 04 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
Oct 30 Javascript
vue.js自定义组件directives的实例代码
Nov 09 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
Mar 09 #Javascript
canvas实现爱心和彩虹雨效果
Mar 09 #Javascript
vue如何实现observer和watcher源码解析
Mar 09 #Javascript
详解VueJs异步动态加载块
Mar 09 #Javascript
微信小程序 设置启动页面的两种方法
Mar 09 #Javascript
js实现登录框鼠标拖拽效果
Mar 09 #Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
Mar 09 #Javascript
You might like
如何用php获取文件名后缀
2013/06/09 PHP
PDO::errorInfo讲解
2019/01/28 PHP
详解Bootstrap按钮
2016/01/04 Javascript
jQuery动态修改字体大小的方法【测试可用】
2016/09/09 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
JS使用插件cryptojs进行加密解密数据实例
2017/05/11 Javascript
node.js 发布订阅模式的实例
2017/09/10 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
vue组件实现可搜索下拉框扩展
2020/10/23 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
python音频处理用到的操作的示例代码
2017/10/27 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
NumPy 数学函数及代数运算的实现代码
2018/07/18 Python
python字符串切割:str.split()与re.split()的对比分析
2019/07/16 Python
Python datetime包函数简单介绍
2019/08/28 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
python实现计算器功能
2019/10/31 Python
Python获取二维数组的行列数的2种方法
2020/02/11 Python
python实现俄罗斯方块游戏(改进版)
2020/03/13 Python
Python新手如何理解循环加载模块
2020/05/29 Python
python使用QQ邮箱实现自动发送邮件
2020/06/22 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
应届生法律顾问求职信
2013/11/19 职场文书
物流仓管员岗位职责
2013/12/04 职场文书
根叔历年演讲稿
2014/05/20 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
教师年终个人总结
2015/02/11 职场文书
全民创业工作总结
2015/08/13 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
创业计划书之酒店
2019/08/30 职场文书
A22国内电台短波广播频率表
2022/05/10 无线电