微信小程序 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 相关文章推荐
jquery检测input checked 控件是否被选中的方法
Mar 26 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
基于javascript制作经典传统的拼图游戏
Mar 22 Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
Ubuntu 16.04 64位中搭建Node.js开发环境教程
Oct 19 Javascript
webpack开发跨域问题解决办法
Aug 03 Javascript
JavaScript基础进阶之数组方法总结(推荐)
Sep 04 Javascript
jquery层次选择器的介绍
Jan 18 jQuery
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
Mar 04 Javascript
Vue实现购物车实例代码两则
May 30 Javascript
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
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制作静态网站的模板框架(一)
2006/10/09 PHP
PHP的面试题集,附我的答案和分析(一)
2006/11/19 PHP
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
细谈php中SQL注入攻击与XSS攻击
2012/06/10 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
2014/06/26 PHP
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
JavaScript 点击触发复制功能实例详解
2018/11/02 Javascript
实例讲解JS中pop使用方法
2019/01/27 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
谈谈JavaScript中的垃圾回收机制
2020/09/17 Javascript
Java 生成随机字符的示例代码
2021/01/13 Javascript
[04:30]显微镜下的DOTA2第五期——拉比克
2013/09/26 DOTA
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
通过代码实例展示Python中列表生成式的用法
2015/03/31 Python
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
迟到检讨书1000字
2014/01/15 职场文书
创先争优活动承诺书
2014/08/30 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书
心术观后感
2015/06/11 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
PHP控制循环操作的时间
2021/04/01 PHP
MySQL系列之十五 MySQL常用配置和性能压力测试
2021/07/02 MySQL
python中的getter与setter你了解吗
2022/03/24 Python