我能找到的Dart Polymer唯一可靠的例子并没有使用任何参数。如何将参数传递给模板。是通过构造函数完成的吗?
我的具体例子是我有一个带有标题的卡片元素,我想将卡片的标题作为字符串传递给元素。
我看过Passing data to a Polymer element
但这不是我想要做的。我想从dart代码中传递数据。
答案 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);
}
}