将参数传递给Dart Polymer元素

时间:2014-04-10 20:06:50

标签: dart dart-polymer polymer

我能找到的Dart Polymer唯一可靠的例子并没有使用任何参数。如何将参数传递给模板。是通过构造函数完成的吗?

我的具体例子是我有一个带有标题的卡片元素,我想将卡片的标题作为字符串传递给元素。

我看过Passing data to a Polymer element

但这不是我想要做的。我想从dart代码中传递数据。

3 个答案:

答案 0 :(得分:5)

元素的构造函数是从Polymer调用的,无法传递参数。

您可以像@Vloz一样编写,在创建元素后分配值,或者您可以使用绑定中的绑定(使用绑定将数据传递给Polymer元素)。

答案 1 :(得分:4)

如果要创建自定义元素,可以使用工厂构造函数:

class MyElement extends HtmlElement {
  int _foo;
  factory MyElement(int foo) => new Element.tag('my-tag').._foo = foo;
  MyElement.created() {
     // Careful _foo has not been assigned yet.
  }
}

main() {
   document.register('my-tag', MyElement);
   var element = new MyElement(42);
}

我认为这也适用于PolymerElements,但我自己没试过。

答案 2 :(得分:2)

即使这有点旧:你实际上可以传递这样的参数:

<my-custom-element booleanAttr valueAttr="test"></my-custom-element>

您的自定义元素应该类似于:

@CustomTag('my-custom-element')
class MyCustomElement extends PolymerElement {
  ...
  @published bool booleanAttr;
  @published String valueAttr;
  ...
}

- 编辑 -

但正如已经指出的那样,对于带有工厂的聚合物元件,这很容易做到:

import 'package:polymer/polymer.dart';
import 'dart:html';

@CustomTag('my-custom-element')
class MyCustomElement extends PolymerElement {
  String a;

  factory MyCustomElement.custom(String _a) {
    MyCustomElemente = new Element.tag('my-custom-element');
    e..a = _a
    // ...
    ..initialized();
    return e;
  }

  MyCustomElement.created() : super.created() {

  }

  void initialized() {
    print("initialized: " + a);
  }
}