2014-07-14 34 views
2

如何獲得下面的paper-input元素的實例?飛鏢紙元素的實例

HTML文件:

<!DOCTYPE html> 
<html> 
<head> 
    <!-- <script src='packages/web_components/platform.js'></script> 
     not necessary anymore with Polymer >= 0.14.0 --> 
    <script src='packages/web_components/dart_support.js'></script>  
    <link rel='import' href='packages/paper_elements/paper_input.html'> 
    <script src='packages/browser/dart.js'></script> 
</head> 
<body fullbleed unresolved> 
    <paper-input id='subject' label='subject'></paper-input> 
    <script type='application/dart' src='myscript.dart'></script> 
</body> 
</html> 

myscript.dart:

import 'dart:html'; 
import 'package:polymer/polymer.dart'; 
import 'package:paper_elements/paper_input.dart'; 
export 'package:polymer/init.dart'; 
PaperInput _subject = querySelector('#subject'); // exception 
void main() { 
    ... 
} 

這造成了一個例外:

Breaking on exception: type 'HtmlElement' is not a subtype of type 'PaperInput' 

從鑄造的HtmlElement到PaperInput不起作用。建議包括使用shadowRoot.querySelector('#subject');和其他shadowRoot用法,但它來自哪裏?如果我將.shadowRoot.querySelector('paper-input')附加到myscript.dart的最後一行,則該元素爲空。如果我使用id而不是標籤名稱,結果相同。元素本身是html主體的頂層,所以它不在其他shadowRoot中。

如果沒有PaperInput類,則無法獲取paper-input的內容。但似乎沒有辦法施展它。

回答

4

你碰上how to implement a main function in polymer apps

當你不喜歡它super.attached()之後,或者在一些點擊或者其他事件處理程序(當元素被正確初始化)

main() { 
    initPolymer().run(() { 
    // code here works most of the time 
    Polymer.onReady.then((_) {  
     // some things must wait until onReady callback is called 
     // for an example look at the discussion linked below 

     PaperInput _subject = querySelector('#subject'); 
    }); 
    }); 
} 
圖所示或聚合物元件( attached()
+0

xD我正在使用它來處理元素的其餘部分,但不是用於初始分配。看起來這將是答案,謝謝你的所有時間!! –

+0

+1 stackoverflow –