微信小程序中,如果几个页面中需要引用同一个header/footer,当定义了公共模板时,有两种引用方法如下:
方法一:在公共模板中定义template元素,利用<import/> 方法 ,这种方式只会显示公共模板的template里面的内容,之外的内容不会显示
wxml:
<import src='公共模板地址'/>
<template is='模板里面template定义的name名称' data='{
{引入的数据1,引入数据2}}'></template> 注意:这里的data='{ {引入的数据1,引入数据2}}' 是在template中要提取js文件中的data数据里面的key名字,否则无法显示公共模板的wxml:在公共模板中必须定义每一个template的的name的名字,否则引用的时候无法得知引用具体某一个;
<template name='header'><!--必须有有name不然import方式无法判断到底要引用哪一个tempalte-->
{ {title.header}}<!--这个数据只是提取要引用的文件的里面js里面定义的对应的数据,如果在其他文件中定义不在要引用的文件中无效--></template>要引用的文件js定义数据:
data: {
title:{header:'这是template的header部分',footer:'这是template的footer部分',other:'这是tempalt外部部分'} }页面结果:
方法二:
<include src="公共模板地址"/>这种方式是引入了模板中除了tempalte以外的所有内容。
<include src="../../template/footer.wxml"/>公共模板的wxml:
{ {title.other}}
js定义的数据:
title:{header:'news里面的的header',footer:'这是template的footer部分'}
页面结果:
总结:import方式和imclude方式的不同在于前者仅引用公共模板中的template里面的内容后者仅引用template以外的内容,显而易见,include方式更简单一些,在wxml中只需要一句话即可。