Dart将数据传递给动态创建的聚合物元素

时间:2013-09-24 04:20:35

标签: parameter-passing dart dart-polymer

我已经阅读过关于如何将数据传递给聚合物元素的这个帖子 Button click in polymer dart does not work; needs polymer-element

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

不过,即使我认为dart是一种非常酷的语言(我不喜欢JavaScript),我发现dart中的聚合物可能还没有准备好。许多事情都没有记录,必须通过例子或问这里。

谢谢, 易

3 个答案:

答案 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