小程序模板不支持递归和动态生成多个
发布于 5 年前 作者 xuegang 2167 次浏览 来自 问答

小程序模板不支持递归使用,为了要实现和递归一样的功能,要定义多个结构相同模板名称不同的模板,重复使用大量相同代码,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>

4 回复

递归是支持的,问题在于module声明。可以增加一个辅助组件bar,在组件foo中使用bar,在bar中使用foo;组件foo和bar的实现一样。模板递归的实现同理。

template是本身是不可以递归的,但可以通过其他方法来做到递归,因为我就实现了。

我简单说一下思路,至于实例代码有点多。

1、和写递归函数一样,得有一个终结条件,否则无限递归没有意义。

2、写两个一样的模板,互相调用,当条件满足时,需要对子组件递归时,用另一个模板。

关键是一定得有两个一样的模板,互相调用,当然模板名称不能相同。

3、还有一个问题,如果只写两个只能循环调用5层,就会报警告发现递归了,解决这个问题还可以把同样的模板再复制几份,依次调用,最后成一个循环

如:    template1 调用 template2 ,

    template2 调用 template3,

    template3 调用 template4

    template4 调用 template1

一定要形成闭环,当然,不建议太多的层,毕竟性能会有影响。

那js支持递归吗?

请问你这个问题有解决方案吗,我这边也有这样的场景,需要遍历一个递归的树目录。

回到顶部