2014-01-18 118 views
0

在主HTML頁面:的index.html否鑄聚合物元件

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

在聚合物HTML定義:polycontainer.html

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

在飛鏢類:polycontainer.dart ...有標記<content>用於渲染外部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)Cast OK; (chil [i]是Node類型,「a」是類型HtmlElement(Node-> Element-> HtmlElement)

(2)*例外:類型'HtmlElement'在類型轉換中不是類型'PolyItem'的子類型。

(3)*例外:。類型 '的HtmlElement' 不是類型的類型轉換的子類型 'PolyItem'

選項2和3在不同時間進行測試

我認爲,如果我們需要在PolyItem構造函數中啓動某個變量或調用一個函數。 有人試圖投射一個擴展類PolymerElement?

回答

0

這應該工作。

只需設置一個斷點並運行您的應用程序。調試器停在斷點處,向您顯示類型和值等信息或範圍內的變量。
您也可以添加print(chil[i]);,它通常會提供關於類型的信息(如果您不使用DartEditor或者調試器不工作,但有時仍會發生這種情況)。

你應該發佈你的整個代碼PolyContainer元素HTMLDart
如果它包含與該問題無關的代碼,請創建一個允許重現問題併發布此代碼的最小示例。