小程序模板不支持递归使用,为了要实现和递归一样的功能,要定义多个结构相同模板名称不同的模板,重复使用大量相同代码,hack 点的办法是使用 for 循环生成多个模板,然而这也不支持。。
<view wx:for="{{[1,2,3,4,5]}}" wx:key="">
< template name = "template{{index}}" >
<block wx:if="{{node.haveChild}}">
< template is = "template{{1 + index}}" data = "{{node.child}}" />
</block>
</template >
</view>
|
template是本身是不可以递归的,但可以通过其他方法来做到递归,因为我就实现了。
我简单说一下思路,至于实例代码有点多。
1、和写递归函数一样,得有一个终结条件,否则无限递归没有意义。
2、写两个一样的模板,互相调用,当条件满足时,需要对子组件递归时,用另一个模板。
关键是一定得有两个一样的模板,互相调用,当然模板名称不能相同。
3、还有一个问题,如果只写两个只能循环调用5层,就会报警告发现递归了,解决这个问题还可以把同样的模板再复制几份,依次调用,最后成一个循环
如: template1 调用 template2 ,
template2 调用 template3,
template3 调用 template4
template4 调用 template1
一定要形成闭环,当然,不建议太多的层,毕竟性能会有影响。
递归是支持的,问题在于module声明。可以增加一个辅助组件bar,在组件foo中使用bar,在bar中使用foo;组件foo和bar的实现一样。模板递归的实现同理。
试过了,没用
那js支持递归吗?
请问你这个问题有解决方案吗,我这边也有这样的场景,需要遍历一个递归的树目录。