没有铸造聚合物元素

时间:2014-01-18 21:28:53

标签: dart dart-polymer

在主要HTML页面中: index.html

<poly-container a="Hi">
    <poly-item b="hi"></poly-item>
</poly-container> 

在Polymer HTML定义中: polycontainer.html

<poly-container>
    <template> ...
        <content></content>
    </template> 
</poly-container>

在Dart课程中: polycontainer.dart ...为渲染外部DOM提供标记<content>; ......和2个类:PolyContainer和PolyItem

  processList() // calling from PolyContainer Constructor;
  {
      PolyItem cl;  
      HtmlElement a;

      ContentElement cont=shadowRoot.querySelector('content');
      List<Node> chil=cont.getDistributedNodes();

      for (var i=0; i < chil.length; i++) {  
         if ( chil[i].nodeName == 'POLY-ITEM' ) {   
           a=chil[i];  // (1)  
           cl=chil[i] as PolyItem; // (2)
           cl=a as PolyItem; // (3)
         }
         chil[i].remove();
      }
  }

(1)施放OK; (chil [i]是类型Node,“a”是HtmlElement类型(Node-&gt; Element-&gt; HtmlElement)

(2)*异常:类型'HtmlElement'不是类型转换中'PolyItem'类型的子类型。

(3)*异常:类型'HtmlElement'不是类型转换中'PolyItem'类型的子类型。

选项2和3在不同时间进行测试。

我想如果我们需要在PolyItem构造函数中启动一些变量或调用一个函数。 有人试图投射扩展类PolymerElement?

1 个答案:

答案 0 :(得分:0)

这应该有效。

只需设置断点并运行您的应用即可。调试器在断点处停止,并向您显示类型和值或范围中的变量等信息 您还可以添加print(chil[i]);,它通常会提供有关类型的信息(如果您不使用DartEditor或调试器不起作用,有时仍会发生)。

您应该发布PolyContainer元素HTMLDart的完整代码。
如果它包含与问题没有任何关系的代码,请创建一个允许重现问题并发布此代码的最小示例。