2

我已阅读有关如何将数据传递给聚合物元素的此线程 聚合物飞镖中的按钮单击不起作用;需要聚合物元素

但是,如果我想通过在 polymer.dart 中使用 createElement() 将数据传递给以编程方式创建的元素,则没有包装模板。如上所述,我将如何传递数据?

顺便说一句,尽管我认为 dart 是一种非常酷的语言(我不喜欢 JavaScript),但我发现 dart 中的聚合物可能还没有准备好。很多事情都没有记录,必须通过示例或在这里询问。

谢谢,易

4

3 回答 3

1

我认为您应该从 MyElementElement-class 中删除 start()-function 并将其添加到上层。基本上你不应该在自定义元素中对上层对象有任何引用。现在自定义元素不可重用,它仅在此上下文中有效。

于 2013-09-25T07:35:24.410 回答
0

这是我如何将数据传递给动态创建的自定义聚合物元素的示例。我的意图是,单击“a href”并在容器 div 中加载聚合物元素。

聚合物元素.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();
}

索引.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 中查看它

于 2013-09-24T11:27:33.997 回答
0

我已经搜索了很长时间,但一切正常。只有一种解决方案对我有用: https ://stackoverflow.com/a/20067111/189411

于 2014-07-10T10:42:44.957 回答