2014-01-18 181 views
1

我有一個問題,我不能解決它。 我有2個聚合物元素嵌套。鑄造型聚合物飛鏢

在主HTML頁面:的index.html

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

在聚合物HTML定義:polycontainer.html

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

在飛鏢類:polycontainer.dart .. 。標記<content>用於渲染外部DOM; ......與2類:PolyContainerPolyItem

... 
ContentElement CE=shadowRoot.querySelectAll('content'); 
List<Node> LN= CE.getDistributedNodes(); 

// LN[i] is a Node type, but we know is an element with type PolyItem. 

for (var i=0; i < ......) { 
    PolyItem PI= (cast) LN[i]; // Error in time running only; 
    ...... 
} 

...我嘗試幾種方法。我不能訪問元素PolyItem。只能訪問節點。我不能施放。

這是怎麼回事?

+0

如果您認爲自己的答案很好,您應該點擊選項下方的複選標記來接受答案。 –

回答

2
PolyItem pi = (ln[i] as PolyItem); 

返回PolyItem如果它是一個或拋出異常,如果它不是。

避免異常,您可以檢查以前

PolyItem pi; 
if(ln[i] is PolyItem) { 
    pi = ln[i]; 
} 
... 

請不要對變量使用大寫名稱:

PI => PI
LN => LN

它的不凡,醜陋和反對飛鏢式指南。
大寫通常用於常量,如果一致使用,則有助於區分意圖。
如果你格式化你的問題和代碼,你有更好的機會得到一個很好的答案。

+0

感謝Günter.Dart在我的代碼中保留樣式。但是不對,他們看到了編輯中的字母,所以我把所有大寫。我會在下一個。 再次感謝您。 – marcelo

+1

沒有問題,只是一點點的支持,幫助你成爲一個好公民,擁有更多的樂趣;-) –