首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DustJS无限嵌套

DustJS无限嵌套
EN

Stack Overflow用户
提问于 2013-09-14 07:02:15
回答 1查看 158关注 0票数 1

我想要创建一个递归模板,这样它就可以处理所有的子级--不管它有多深。

让我们说我的上下文看起来像

代码语言:javascript
复制
{
  div:true
  ,id:'root'
  ,children:[
    {div:true,id='root-1'}
    ,{div:true,id='root-2', children:[
      {div:true,id='root-2.1'} //etc,ect...      
     ]}
    }
}

我想说:

代码语言:javascript
复制
var div_tpl='{#div}'+
  '<div{#id} id="{id}"{/id}{#class} class="{class}"{/class}>'+
  '{#children}{>div_tpl/}{/children}'+ //self-ref here
  '</div>{/div}';

dust.compile(div_tpl,'div_tpl');

当然,当我给它提供数据时,它会挂起。我还尝试过使用div_tpl1和div_tpl2,它们都引用了另一个。所以现在我只需要确认这是“不可能的”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-14 18:21:01

好消息是这是可能的。看起来,你所遇到的麻烦与沙尘的查找方式有关。目前,{#children}将查看当前上下文,然后(如果它在当前上下文中没有发现任何内容)在所有父上下文中。

因此,在您的示例中,Dust将开始呈现第一个div (id="root"),然后找到它的children,然后开始呈现它们。它将呈现第二个div (id="root-1"),然后查找children。它不会在当前上下文中找到children,所以它将在父上下文中查找children。然后尘埃会再次呈现第二个div,再次寻找孩子,并无限循环。

您可以使用点表示法来避免无限循环:

代码语言:javascript
复制
...
{#.children}
    {>div_tpl/}
{/.children}
...

有关工作示例,请参见此小提琴

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18799261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档