2013-07-08 38 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'標籤可以插入到組件中。 –