收藏
回答

小程序模板不支持递归和动态生成多个

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

  • 风行
    风行
    2019-07-06

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


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

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

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

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

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

    如:     template1 调用 template2 ,

        template2 调用 template3,

        template3 调用 template4

        template4 调用 template1

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

    2019-07-06
    有用
    回复 1
    • break
      break
      2019-08-19
      大家在这里讨论的目的就是为了规避这种用法的...
      2019-08-19
      回复
  • josherich
    josherich
    2018-08-26

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

    2018-08-26
    有用
    回复 1
    • 小和尚
      小和尚
      2019-07-04

      试过了,没用

      2019-07-04
      回复
  • Elliot
    Elliot
    2018-05-08

    那js支持递归吗?

    2018-05-08
    有用
    回复
  • 艳儿
    艳儿
    2018-04-17

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


    2018-04-17
    有用
    回复
登录 后发表内容