動的に作成されたカスタム ポリマー要素にデータを渡す方法の例を次に示します。私の意図は、「a href」をクリックして、コンテナ div にポリマー要素をロードすることでした。
Polymer_element.html
<polymer-element name="my-element">
<template bind>
<p> {{ mytext }} </p>
</template>
<script type="application/dart" src="polymer_myelement.dart"></script>
</polymer-element>
polymor_element.dart
import 'dart:html';
import 'package:polymer/polymer.dart';
import 'package:custom_element/custom_element.dart';
@CustomTag('polymer-myelement')
class MyElementElement extends PolymerElement with ObservableMixin {
bool get applyAuthorStyles => true;
@observable String mytext = "initial text";
void start() {
query('#a href to click').onClick.listen((MouseEvent event){
query('.container').children.clear();
var myElem = createElement('polymer-myelement');
MyElementElement myel = myElem.xtag;
myel.mytext = "i changed the text now or import w/e you want";
query('.container').children.add(myElem);
});
}
}
main() {
MyElementElement el = new MyElementElement();
el.start();
}
index.html
<head>
<link rel="import" href="polymer_myelement.html">
and everything you need ...
</head>
<body>
<a href to click>click me for new text</a>
<div class="container">
<!-- START OF MAINCONTAINER -->
<!-- END OF MAINCONTAINER -->
</div>
</body>
説明は次のとおりです。私の main() では、start() 関数を実行し、ナビゲーション バーの href に onclickListener を設定するだけです。ここで href をクリックすると、"div class="container" 内のすべての子をクリアするだけです。これは、ポリマー要素を挿入する前に常に div をクリアする必要があるためです。次に、"createElement('polymer- mylement');". MyElement オブジェクトを作成し、ポリマー要素の「xtag」を割り当てます。これで、すべてのプロパティにアクセスできるようになり、それらを変更できます。作成した要素を div に追加するだけで完了です。
ポリマー要素を動的に作成し、新しいデータをそれに割り当てて、index.html で確認しました。