微信小程序 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操作Cookies的实现代码
Oct 09 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
Dec 08 Javascript
JavaScript中常用的六种互动方法示例
Mar 13 Javascript
canvas实现十二星座星空图
Feb 14 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
bootstrap switch开关组件使用方法详解
Aug 22 Javascript
使用vue中的v-for遍历二维数组的方法
Mar 07 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
Vue.js中的高级面试题及答案
Jan 13 Javascript
jquery轮播图插件使用方法详解
Jul 31 jQuery
解决vue自定义指令导致的内存泄漏问题
Aug 04 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统计目录下的文件总数及代码行数(去除注释及空行)
2011/01/17 PHP
CI框架中集成CKEditor编辑器的教程
2014/06/09 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
CodeIgniter多语言实现方法详解
2016/01/20 PHP
jQuery 研究心得 取得属性的值
2007/11/30 Javascript
jQueryUI如何自定义组件实现代码
2010/11/14 Javascript
JavaScript之appendChild、insertBefore和insertAfter使用说明
2010/12/30 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
2013/06/24 Javascript
轻松创建nodejs服务器(10):处理上传图片
2014/12/18 NodeJs
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
2018/10/26 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
Python实现ssh批量登录并执行命令
2016/10/25 Python
Python3.5.3下配置opencv3.2.0的操作方法
2018/04/02 Python
Python实现的简单读写csv文件操作示例
2018/07/12 Python
Python合并多个Excel数据的方法
2018/07/16 Python
python实现汽车管理系统
2018/11/30 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
2019/09/11 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Python如何实现机器人聊天
2020/09/10 Python
HTML5安全介绍之内容安全策略(CSP)简介
2012/07/10 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
全球在线商店:BerryLook
2019/04/14 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
项目专员岗位职责
2013/12/04 职场文书
《听鱼说话》教学反思
2014/02/15 职场文书
收银出纳员岗位职责
2014/02/23 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
伏羲庙导游词
2015/02/09 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
预备党员入党感想
2015/08/10 职场文书
浅谈Redis跟MySQL的双写问题解决方案
2022/02/24 Redis