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いますが、それはどこから来たのですか? myscript.dart の最後の行に追加.shadowRoot.querySelector('paper-input')すると、要素は null になります。タグ名の代わりに ID を使用しても同じ結果になります。要素自体は html 本体の最上位にあるため、他の shadowRoot にはありません。

paper-inputクラス PaperInput でなければ、の内容を取得する方法はありません。しかし、それをキャストする方法はないようです。

4

1 に答える 1