微信小程序 Template详解及简单实例


Posted in Javascript onJanuary 05, 2017

微信小程序 Template

模板

WXML提供模板(Template),可以在模板中定义代码片段,然后在不同的地方使用。可以保证格式以及数据的相同。

1-定义模板

使用`<template name="tempName"></template>`标签定义模板,并将模板名称命名为tempName,赋值给属性name。在标签内部,定义模板结构。如下:

<!-- template.wxml -->
<!-- 
  index: int
  msg: string
  time: string
-->
<template name="msgItem">
  <view>
  <text> {{index}}: {{msg}} </text>
  <text> Time: {{time}} </text>
 </view>
</template>

2-使用模板

使用<template is="tempName" />标签,在需要使用模板的地方。如果要用到js文件中的数据,则需要添加data属性。如下:

<!-- template.wxml -->

<template is="msgItem" data="{{...item}}"/>
<template is="msgItem" data="{{...item}}"/>
<template is="msgItem" data="{{...item}}"/>
此时在页面上就会重复显示三次相同的信息。
data中的数据,来源于js文件,如下:

<!-- template.js -->
Page({
 data: {
  item: {
   index: 0,
   msg: 'this is a template',
   time: '2016-09-15'
  }
 }
})

3-is属性

is属性不仅可以静态的指向渲染的模板,也可以使用Mustache语法,来动态决定具体需要渲染哪个模板。如下:

<!-- template.wxml -->

// templates
<template name="odd">
  <view> odd </view>
</template>
<template name="odd">
  <view> even </view>
</template>

// is属性使用Mustache语法动态渲染template
<block wx:for="{{[1, 2, 3, 4,5]}}">
  <template is="{{item % 2 == 0 ? 'even' : 'odd'}}" />
</block>

如上代码,则会在页面中根据条件来显示odd 或是 even

4-模板的引用

如上都是在同一个wxml文件中定义和引用模板,而模板的定义和引用是可以分开的。即在一个文件中定义模板,而在其他一个或多个文件wxml文件中都可以使用定义好的模板。
从外部文件中引用模板,使用import src="templateUrl" />标签。同样使用is属性来指向要引用的标签。
如目录如下:

-pages
  |--index
    |--index.js
    |--index.json
    |--index.wxml
    |--index.wxss
  |--template
    |--template.js
    |--template.json
    |--template.wxml
    |--template.wxss

要在index.wxml中使用template中定义的模板,则需要先在index中利用import来导入该模板:

<!-- index.wxml -->
<import src="../template/template.wxml"
<template is="msgItem" data={{...indexData}}
// 使用的是自己js文件中的数据

要注意import作用域,其仅仅引用目标文件中template。如:C import B,B import A,在C中可以使用B定义的template,在B中可以使用A定义的template,但是C不能使用A定义的template。

参考

微信小程序文档-框架-视图层-WXML-模板

微信小程序文档-框架-视图层-WXML-引用

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

Javascript 相关文章推荐
Javascript模块模式分析
May 16 Javascript
监控 url fragment变化的js代码
Apr 19 Javascript
Jquery ThickBox插件使用心得(不建议使用)
Sep 08 Javascript
使用jquery实现的一个图片延迟加载插件(含图片延迟加载原理)
Jun 05 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
Aug 27 Javascript
JavaScript严格模式禁用With语句的原因
Oct 20 Javascript
微信小程序页面滑动屏幕加载数据效果
Nov 16 Javascript
利用Webpack实现小程序多项目管理的方法
Feb 25 Javascript
说说如何利用 Node.js 代理解决跨域问题
Apr 22 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
Sep 05 Javascript
vue自定义标签和单页面多路由的实现代码
May 03 Javascript
vue组件的路由高亮问题解决方法
May 11 Vue.js
echarts3 使用总结(绘制各种图表,地图)
Jan 05 #Javascript
微信小程序 数组中的push与concat的区别
Jan 05 #Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
Jan 05 #Javascript
bootstrap制作jsp页面(根据值让table显示选中)
Jan 05 #Javascript
详解PHP中pathinfo()函数导致的安全问题
Jan 05 #Javascript
jQuery电话号码验证实例
Jan 05 #Javascript
纯原生js实现table表格的增删
Jan 05 #Javascript
You might like
PHP 递归效率分析
2009/11/24 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
PHP中的自动加载操作实现方法详解
2019/08/06 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
js中prototype用法详细介绍
2013/11/14 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
基于zepto的移动端轻量级日期插件--date_picker
2016/03/04 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
Python基于PycURL自动处理cookie的方法
2015/07/25 Python
Django 路由系统URLconf的使用
2018/10/11 Python
Python基础之函数的定义与使用示例
2019/03/23 Python
python设置环境变量的作用和实例
2019/07/09 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
销售文员的岗位职责
2013/11/20 职场文书
《黄山奇石》教学反思
2014/04/19 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
霸气押韵的班级口号
2014/06/09 职场文书
入党介绍人意见范文
2015/06/01 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
Pytorch中Softmax和LogSoftmax的使用详解
2021/06/05 Python
JavaScript数组reduce()方法的语法与实例解析
2021/07/07 Javascript