2013-07-08 36 views
1

我对Dart完全陌生,所以请原谅我的无知。飞镖模板可以处理递归混合结构吗?

可以说我试图模拟一个有框架和段落的树。一个框架可以包含段落和其他框架(递归)。 (注意:这些框架不是内联框架,只是一个容纳内容的框。)

Frame 
    Paragraph 
    Frame 
     Paragraph 
     Paragraph 
     Frame 
     Paragraph 
    Paragraph 
    ... 

这些树没有规定的结构。只是想知道如何使用dartUI来显示像这样的混合类型的递归树结构。你可以通过模板/绑定来实现吗?

编辑:此树结构是动态的,并在运行时更改(即用户可以添加框架和段落)。所以我在寻找的是一种从这个模型生成视图的方法,不需要调用服务器来生成新的内容结构。

我在想也许template iterate可能用于遍历一个框架的所有孩子,并以某种方式切换基于孩子是否是段落或框架插入的元素。

回答

1

您可以使用<content>标记将任意HTML插入Web组件。您可以使用CSS选择器来限制显示在内容区域中的内容。完全实施的,可容纳其他帧和段落看起来像这样一个框架单元的例子:

X-frame.dart:

<!DOCTYPE html> 

<html> 
    <body> 
    <element name="x-frame" constructor="FrameComponent" extends="div"> 
     <template> 
     <content select="div[is=x-frame], p"></content> 
     </template> 
     <script type="application/dart"> 
     import 'package:web_ui/web_ui.dart'; 

     class FrameComponent extends WebComponent { 
     } 
     </script> 
    </element> 
    </body> 
</html> 

使用嵌套的框架:

<x-frame> 
    <p>Hello There!</p> 
    <x-frame> 
    <p>We are nested.</p> 
    </x-frame> 
    <x-frame> 
    <x-frame> 
     <p>A third level!</p> 
    </x-frame> 
    </x-frame> 
</x-frame> 

您可以阅读Dart WebUI article了解更多信息。

注:内容选择针对各种不同的比赛是属性,因为成分标签转换为格式(换句话说,即使我们可以通过<x-frame>创建框架组件,他们将在DOM显示为<div is="x-frame">

+0

什么(内容选择=“div [is = x-frame],p”'?我无法在WebUI的(非常非常稀少的)文档中找到它 – DrColossos

+0

@Pixel因此,使用这种方法必须生成

您好!

内容 - 是否有另一种方法来模拟树(即每个对象都有父级和子级列表),并且可以动态生成该内容?当时认为可能存在像temp后期迭代“,这也可以有条件地切换显示内容。 – gremwell

+1

@DrColossos内容标签指定HTML可以插入组件中。选择使用CSS选择器来指定允许插入哪些HTML标记。在我的例子中,只有'''属性为'x-frame'的'p'标签和'div'标签可以插入到组件中。 –