我已经阅读过关于如何将数据传递给聚合物元素的这个帖子 Button click in polymer dart does not work; needs polymer-element
但是,如果我想通过在polymer.dart中使用createElement()将数据传递给以编程方式创建的元素,那么就没有包装模板。我如何传递上述数据?
不过,即使我认为dart是一种非常酷的语言(我不喜欢JavaScript),我发现dart中的聚合物可能还没有准备好。许多事情都没有记录,必须通过例子或问这里。谢谢, 易
答案 0 :(得分:1)
我认为你应该从MyElementElement-class中删除start() - 函数并将其添加到上一级。基本上你不应该在custom元素中对上层对象有任何引用。现在自定义元素不可重用,它只能在此上下文中工作。
答案 1 :(得分:0)
以下是我如何将数据传递给动态创建的自定义聚合物元素的示例。 我的意图是,点击“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 =”容器中的所有孩子,因为在插入我的聚合物元素之前我总是想要一个清晰的div。 现在创建一个带有“createElement('polymer-mylement');”的聚合物元素。 创建一个MyElement对象并为其分配聚合物元素“xtag”。 现在您可以访问所有属性并可以更改它们。 只需将创建的元素添加到div中即可完成。
您只需动态创建一个聚合物元素,将新数据分配给它并在index.html
中查看答案 2 :(得分:0)
我已经搜索了很长时间,但任何工作都有效。只有一种解决方案适合我:https://stackoverflow.com/a/20067111/189411