WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用减少冗余代码。

1.1定义模板

1.1.1、创建模板文件夹

 1.1.2、使用 name 属性,作为模板的名字。然后在<template/>内定义代码片段,如:

<!-- 使用 name 属性,作为模板的名字 -->
<template name="personCourseItemTmp">
<!-- 显示 -->
<view wx:if="{{mentor_image_uri==null}}">
<!-- 默认图片地址 -->
<image class="widget_arrow" src="../../image/img1.jpg" mode="aspectFill"></image>
</view>
<view wx:else>
<image class="widget_arrow" src="{{mentor_image_uri}}" mode="aspectFill"></image>
</view> <view class='info'><span>姓名:</span>{{mentor_name}}</view>
<view class='info'><span>职位:</span>{{career}}</view>
<view class='info'><span>公司:</span>{{company_name}}</view>
<view class='info'><span>地区:</span>{{address}}</view>
<view class='info'><span>擅长:</span>{{mentor_skills}}</view>
<navigator>详情</navigator>
<view class='hr'></view>
</template>
.name {
text-align: center;
} .widget_arrow {
margin-top: 20px;
height: 200px;
width: 200px;
margin-left: 25%;
} .info {
font-size: 14px;
width: 370rpx;
margin: auto;
margin-top: 10px;
}
.info span{
font-weight:;
} .info_border {
height: 200px;
width: 200px;
border: 8px solid red;
} navigator {
margin: 0 auto;
height: 40px;
width: 90%;
margin-top: 20px;
margin-bottom: 20px;
background-color: green;
line-height: 40px;
text-align: center;
} .hr {
height:;
width: 100%;
border: 1px solid green;
}

1.2、使用模板

1.2.1、创建index8

 1.2.2、在需要使用的页面使用import导入该wxml页面,注意路径位置

<!-- 引入模块 -->
<import src="../index7/index.wxml" /> <block wx:for="{{message}}" wx:key="id">
<template is="personCourseItemTmp" data="{{...item}}"></template>
</block>

1.2.3、在index8的wxss引入index7的样式

@import "../index7/index.wxss"

1.2.4、在index8的js动态写入数据

  data: {
message:[
{
mentor_image_uri:"../../image/timg3.jpg",
mentor_name:"lhs",
career: "程序员",
company_name:"aft",
address:"珠海",
"mentor_skills":"微信小程序"
},
{
mentor_image_uri: "../../image/timg.jpg",
mentor_name: "lwx",
career: "美工",
company_name: "aft",
address: "珠海",
"mentor_skills": "PS"
}
]
},

运行结果:

1.2.5、如果只想显示其中的一条数据,修改代码如下:

<!-- 引入模块 -->
<import src="../index7/index.wxml" /> <block wx:for="{{message}}" wx:key="id">
<!-- index是下标 -->
<template wx:if="{{index==0}}" is="personCourseItemTmp" data="{{...item}}"></template>
</block>

1.3、is 属性的使用

1.3.1、在index7定义两个模板(tem_2和tem_3);

<!-- 动态数据 -->
<template name="tem_2">
<!-- 显示 -->
<view wx:if="{{mentor_image_uri==null}}">
<!-- 默认图片地址 -->
<image class="widget_arrow" src="../../image/img1.jpg" mode="aspectFill"></image>
</view>
<view wx:else>
<image class="widget_arrow" src="{{mentor_image_uri}}" mode="aspectFill"></image>
</view>
<view class='info'><span>姓名:</span>{{mentor_name}}</view>
<view class='info'><span>职位:</span>{{career}}</view>
<view class='info'><span>公司:</span>{{company_name}}</view>
<view class='info'><span>地区:</span>{{address}}</view>
<view class='info'><span>擅长:</span>{{mentor_skills}}</view>
<navigator>详情</navigator>
<view class='hr'></view>
</template> <!-- 默认,不动态写入数据-->
<template name="tem_3">
<!-- 显示 -->
<view wx:if="{{mentor_image_uri==null}}">
<!-- 默认图片地址 -->
<image class="widget_arrow" src="../../image/img1.jpg" mode="aspectFill"></image>
</view>
<view wx:else>
<image class="widget_arrow" src="../../image/timg.jpg" mode="aspectFill"></image>
</view>
<view class='info'><span>姓名:</span>lcy</view>
<view class='info'><span>职位:</span>程序员</view>
<view class='info'><span>公司:</span>未知</view>
<view class='info'><span>地区:</span>珠海</view>
<view class='info'><span>擅长:</span>爱笑</view>
<navigator>详情</navigator>
<view class='hr'></view>
</template>

1.3.2、在index8使用模板;这里使用is 属性声明需要的使用的模板,另外is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板

<!-- 引入模块 -->
<import src="../index7/index.wxml" /> <!-- is 属性可以使用 Mustache 语法,来动态决定具体需要渲染哪个模板 -->
<block wx:for="{{message2}}">
<!-- 1==1是true,所以使用tem_2模板 -->
<template is="{{1 == 1 ? 'tem_2' : 'tem_3'}}" data="{{...item}}"/>
</block>
1.3.3、在index8.js动态写入数据
  data: {
message2:[
{
mentor_image_uri: "../../image/timg2.jpg",
mentor_name: "ljq",
career: "护士",
company_name: "中山远大医院",
address: "中山市",
"mentor_skills": "爱看书"
}
]
},

结果如下:

总结

  • 在一个项目中需要在多处页面使用类似的模块,就需要创建模板—-减少代码量,同时代码高度复用;
  • 在同一个WXML文件中创建多个类似的模板用name属性来区别;
  • 模板WXSS在全局引入和在使用页面引入的区别在于模板的使用量;
  • 使用 import 引入模板 WXML 和 WXSS ;
  • 通过template 标签使用模板,template 标签的 is 属性与模板的 name 属性对应,data 属性代表传入模板的数据。

微信小程序——template详细使用的更多相关文章

  1. 微信小程序 template模板使用

    参考文章: 微信小程序-template模板使用

  2. 微信小程序template模板与component组件的区别和使用

    前言: 除了component,微信小程序中还有另一种组件化你的方式template模板,这两者之间的区别是,template主要是展示,方法则需要在调用的页面中定义.而component组件则有自己 ...

  3. 微信小程序 template添加点击事件

    介绍template是微信小程序提供的模板,可以在模板中定义代码片段,然后在不同的地方调用. 简单使用定义template因为项目中可能会需要到不止一个template,所以最好新建一个文件夹来存放t ...

  4. 微信小程序template富文本插件image宽度被js强制设置

    这段时间一直做微信小程序,过程中遇到了一个问题,这个问题一直没有得到完美的解决. 问题描述: 在Web编程中经常会引入template插件,这个插件是封装好,我们通常的做法是直接引入,配置简单,好用, ...

  5. .NET开发微信小程序-Template模块开发

    1.添加一个文件目录,里面放模板信息 例:我在根目录添加一个文件夹:template 然后在这个文件夹下面添加相应的页面.比如我添加一个promodel.wxml文件.主要是放商品相关的模块信息(注: ...

  6. 微信小程序——template的使用方法

    今天需要做一个[我的订单]页面,订单有几种状态,觉得把订单列表封装成一个模板更好.下面讲一下,如何用小程序自带的template构建一个模板. 1.构建订单列表模板页,命名为 [order.wxml] ...

  7. 转发:微信小程序-template模板使用

    转载于CSDN--[向朔1992]处.(部分内容根据实际情况有所修改) 小程序实现主页面调用次级页面的wxml页面内容,如下图:   根据上图,我们可以将图片和图片信息作为一个goodsList.wx ...

  8. [转]微信小程序-template模板使用

    本文转自:http://blog.csdn.net/u013778905/article/details/59646241 如下图,我在做华企商学院小程序的时候,课程搜索结果页和课程列表页结构是完全一 ...

  9. 微信小程序 - template和include详细描述

    演示 index.wxml <!-- 内部模板 --> <template name="all"> {{a}} {{b}} </template> ...

随机推荐

  1. 2019.NET Conf China(中国.NET开发者峰会)活动全纪录:.NET技术之崛起,已势不可挡

    一.微软走向开放与.NET Core的诞生 当今时代,气象更新,技术飞速发展. 当今时代,开发者大概是最优秀的群体.每一位开发者,无不奋勇向前,努力追寻时代的步伐,以大无畏的精神迎接挑战,紧跟大时代成 ...

  2. centos中网卡的配置

    配置临时IP: ip a a 192.168.59.100/24 dev ens32 ifconfig ens32 192.168.59.100 up 在Linux最小安装之后,一般需要手动配置网络地 ...

  3. 生信 - 从repeatmasker传送门过来的 blast

    以前有的是非完整时间写的博客,抽时间需要统一整理一下. 今天在重新装repeatmasker. 整个过程是这样的,有关联的事情有两个. 1. 装repeatmasker需要各种Prerequisite ...

  4. 在 ASP.NET Core 项目中使用 MediatR 实现中介者模式

    一.前言  最近有在看 DDD 的相关资料以及微软的 eShopOnContainers 这个项目中基于 DDD 的架构设计,在 Ordering 这个示例服务中,可以看到各层之间的代码调用与我们之前 ...

  5. Cef 因系统时间不正常,导致页面访问空白问题

    当我们的系统时间不正常,比如设置一个日期-1999年9月9日,会引发证书问题. 系统时间不正常-IE有概率能访问 触发NavigateError事件,异常代码INET_E_INVALID_CERTIF ...

  6. poj 3281 Dining (Dinic)

    Dining Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22572   Accepted: 10015 Descript ...

  7. React组件间的通讯

    组件化开发应该是React核心功能之一,组件之间的通讯也是我们做React开发必要掌握的技能.接下来我们将从组件之间的关系来分解组件间如何传递数据. 1.父组件向子组件传递数据 通讯是单向的,数据必须 ...

  8. fastjason常用方法

    背景 fastjson爆出重大漏洞,攻击者可使整个业务瘫痪 漏洞描述 常用JSON组件FastJson存在远程代码执行漏洞,攻击者可通过精心构建的json报文对目标服务器执行任意命令,从而获得服务器权 ...

  9. Javascript脚本语言

    找组件用 id (唯一) 2.name 样式 使用分类 1 页面中 2 建JS文件 可以放在head也可以在body 工作区可以有 1 全局变量 2 由多个函数构成 标签编辑器 onChange 改变 ...

  10. uniapp打包Android APP

    1.uniAPP 将项目打包成,打包成功后格式如下 2.下载相关工具 Android studio(打包成app的工具) 和Hbuilder官方SDK,安装解压响应工具 3. 用 Android st ...