微信小程序组件wxParse中的模版template使用方法
模板WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。 介绍及使用方法:模版(template)你不陌生吧? 看看微信的模版官方用法微信小程序官方文档-模版 着重提一下Mustache的判断语法,不陌生吧 <template name="odd"> <view> odd </view></template><template name="even"> <view> even </view></template><block wx:for="{{[1, 2, 3, 4, 5]}}"> <template is="{{item % 2 == 0 ? 'even' : 'odd'}}"/></block> 模版的引入详细讲解官方文档 微信小程序官方文档-模版引入42 <!-- A.wxml --><template name="A"><text> A template </text></template> <!-- B.wxml --><import src="a.wxml"/><template name="B"><text> B template </text></template> <!-- C.wxml --><import src="b.wxml"/><template is="A"/> <!-- Error! Can not use tempalte when not import A. --><template is="B"/> 循环使用测试我们拿上面的例子来看多做几个, >小技巧:一个模版文件可以写多个模版,只要名字不同即可 在写wxParse的时候,我希望能够通过一个模版来自我循环调用实现,但是因为作用域的问题,不能够进行调用,所以我希望能够呈现三角调用,做下面的例子看看 <template name="A"> <text> A template </text></template><template name="B"> <text> B template </text></template><template name="C"> <text> C template </text></template> 可以循环调用的话输出结果 A templateB templateC templateA templateB templateC template.../循环 实际场景下输出 A templateB templateC template 结论就是,其无法进行循环调用,不仅是传值问题,文档中也有提到。 困难1:无法循环使用模版下,如何处理多级HTML嵌套解析 实际代码我们使用下面的代码进行不断的重复,只需要修改template对应指向下一个模版,并不断累加到10个以上,基本上能够解决大部分的html解析问题。 <template name="wxParse0"> <!--判断是否是标签节点--> <block wx:if="{{item.node == 'element'}}"> <block wx:if="{{item.tag == 'button'}}"> <button type="default" size="mini" > <block wx:for="{{item.child}}" wx:for-item="item"> <template is="wxParse1" data="{{item}}"/> </block> </button> </block> <!--li类型--> <block wx:elif="{{item.tag == 'li'}}"> <view class="wxParse-li"> <view class="wxParse-li-inner"> <view class="wxParse-li-text"> <text class="wxParse-li-circle"></text> </view> <view class="wxParse-li-text"> <block wx:for="{{item.child}}" wx:for-item="item"> <template is="wxParse1" data="{{item}}"/> </block> </view> </view> </view> </block> <!--video类型--> <block wx:elif="{{item.tag == 'video'}}"> <!--增加video标签支持,并循环添加--> <view class="wxParse-{{item.tag}}"> <video class="wxParse-{{item.tag}}-video" src="{{item.attr.src}}"></video> </view> </block> <!--img类型--> <block wx:elif="{{item.tag == 'img'}}"> <view class="wxParse-{{item.tag}}"> <image src="{{item.attr.src}}" mode="aspectFit"></image> </view> </block> <block wx:else> <view class="wxParse-{{item.tag}}"> <block wx:for="{{item.child}}" wx:for-item="item"> <template is="wxParse1" data="{{item}}"/> </block> </view> </block> </block> <!--判断是否是文本节点--> <block wx:elif="{{item.node == 'text'}}"> <!--如果是,直接进行--> <block wx:if="{{item.text != '' || item.text != ' ' || item.text != ' ' || item.text != 'nn'}}"> <text>{{item.text}}</text> </block> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |