【问题标题】:No cast the polymer elements不浇铸聚合物元件
【发布时间】:2014-01-18 21:28:52
【问题描述】:

在主要 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 ...有标签 &lt;content&gt; 用于渲染外部 DOM; ...以及 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->Element->HtmlElement)

(2)* 例外:类型“HtmlElement”不是类型转换中“PolyItem”类型的子类型。

(3)* 例外:类型“HtmlElement”不是类型转换中“PolyItem”类型的子类型。

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

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

【问题讨论】:

    标签: dart dart-polymer


    【解决方案1】:

    这应该可行。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多