微信小程序 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利用初始化数据装配模版的实现代码
Nov 17 Javascript
AJAX分页的代码(后台asp.net)
Feb 14 Javascript
jquery实现树形二级菜单实例代码
Nov 20 Javascript
js模拟点击以提交表单为例兼容主流浏览器
Nov 29 Javascript
jQuery中offset()方法用法实例
Jan 16 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
bootstrap table表格使用方法详解
Apr 26 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
Apr 27 jQuery
微信小程序实现循环动画效果
Jul 16 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
js实现右键弹出自定义菜单
Sep 08 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&amp;&amp;mysql)五
2006/10/09 PHP
PHP 最大运行时间 max_execution_time修改方法
2010/03/08 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
实例讲解php数据访问
2016/05/09 PHP
php的PDO事务处理机制实例分析
2017/02/16 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
Javascript中的Array数组对象详谈
2014/03/03 Javascript
封装了一个支持匿名函数的Javascript事件监听器
2014/06/05 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
javascript简单实现图片预加载
2014/12/03 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
JS实现三级折叠菜单特效,其它级可自动收缩
2015/08/06 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
2017/02/24 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
[03:05]《我与DAC》之xiao8:DAC与BG
2018/03/27 DOTA
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
2016/06/14 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python实现的生成word文档功能示例
2019/08/23 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
Python通过两个dataframe用for循环求笛卡尔积
2020/04/29 Python
幼儿园优秀教师事迹
2014/02/13 职场文书
林肯就职演讲稿
2014/05/19 职场文书
团队激励口号
2014/06/06 职场文书
银行岗位培训心得体会
2016/01/09 职场文书