微信小程序 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 相关文章推荐
MooTools 1.2中的Drag.Move来实现拖放
Sep 15 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
原生js实现半透明遮罩层效果具体代码
Jun 06 Javascript
关于RequireJS的简单介绍即使用方法
Oct 20 Javascript
js获取指定字符前/后的字符串简单实例
Oct 27 Javascript
微信小程序 wxapp内容组件 progress详细介绍
Oct 31 Javascript
详解微信小程序 页面跳转 传递参数
Dec 08 Javascript
微信小程序后台解密用户数据实例详解
Jun 28 Javascript
Vue表单输入绑定的示例代码
Nov 01 Javascript
vue组件间通信六种方式(总结篇)
May 15 Javascript
JS中箭头函数与this的写法和理解
Jan 14 Javascript
js动态添加带圆圈序号列表的实例代码
Feb 18 Javascript
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 select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
php实现对象克隆的方法
2015/06/20 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
js编写一个简单的产品放大效果代码
2016/06/27 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
详解webpack+es6+angular1.x项目构建
2017/05/02 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
jQuery EasyUI结合zTree树形结构制作web页面
2017/09/01 jQuery
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
荷兰超市:DEEN
2018/03/14 全球购物
超市仓管员岗位职责
2014/04/07 职场文书
活动总结格式范文
2014/04/26 职场文书
卫生标语大全
2014/06/21 职场文书
房屋过户委托书范本
2014/10/07 职场文书
机关干部三严三实心得体会
2014/10/13 职场文书
幼儿园个人总结
2015/02/28 职场文书
护士自荐信怎么写
2015/03/06 职场文书
摘录式读书笔记
2015/07/01 职场文书
2015年党风廉政建设个人总结
2015/08/18 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android