从dart代码嵌套Web组件

时间:2013-07-03 17:09:16

标签: dart dart-webui

我有多个嵌套的Web组件来表示网格。我需要用飞镖码编写这些。 我有一个按照dart docs:

的建议创建Web组件的功能
void addWebComponent(WebComponent component,String tagName,WebComponent parent) { 
    component.host = (new Element.html("<${tagName}></${tagName}>"));        
    var lifecycleCaller = new ComponentItem(component)
    ..create();
    parent.append(component.host);
    lifecycleCaller.insert();
    return;
}

每个Web组件都包含如下模板:

  <template>
      <div class="grid">
         <div class="large-12 columns" >                    
            <content></content>
         </div>
       </div>          
  </template>

我的假设是调用 parent.append(component.host); 会将注入​​的Web组件html添加到CONTENT元素中。它没有。 这就是我期待的结果:

<x-grid>
      <div class="grid">
         <div class="large-12 columns">
             <x-row> 
                  <div class="row">...</div>           
             </x-row>
         </div>
       </div>          
</x-grid>

这就是我得到的:

 <x-grid>
      <div class="grid">
         <div class="large-12 columns"> 
                 **[Content should be here!]**               
         </div>
       </div>    
         **[ CONTENT ENDS UP HERE]**
         <x-row> 
                  <div class="row">...</div>           
             </x-row>

</x-grid>

我的猜测是,从dart代码中,您无法通过parent.append(component.host)添加到Web组件的内容。是否还需要一些其他功能或步骤来完成这项工作? 这太痛苦了。

1 个答案:

答案 0 :(得分:2)

试试这个:

添加到父级:

List<WebComponent> items = toObservable([]);

变化:

parent.append(component.host);

要:

parent.items.add(component);

然后将HTML修改为:

<template>
  <div class="grid">
     <div class="large-12 columns" template iterate="item in items">                    
        {{ new SafeHtml.unsafe(item.host.innerHtml) }}
     </div>
  </div>          
</template>