【发布时间】:2014-07-22 19:51:46
【问题描述】:
我正在尝试在 Dart 中使用 Polymer 创建一个自定义的“径向选择器”元素。
我当前的目标是为 RadialSelector 类创建一个可观察的“子”字段,以便我可以对子类进行模板循环并过滤那些仅属于特定元素类型的子类。
目前尚不清楚如何在不创建另一个与命名空间不冲突的变量的情况下使“children”字段可观察。例如,我可以创建一个“childs”字段,使其可观察,然后将其设置为等于 this.children。但这似乎很尴尬和样板。
我的 RadialSelector 类(它扩展了 PolymerElement 类)是否有办法使其超类“子”字段可观察?目前,当我只写@observable children 时,Dart(可以理解)认为我只是在创建一个新的“children”变量。
谢谢,如果有什么我可以说得更清楚的,请告诉我! :)
这是飞镖代码:
import 'package:polymer/polymer.dart';
import 'dart:html';
@CustomTag('radial-selector')
class RadialSelector extends PolymerElement {
@published String img;
@observable children;
RadialSelector.created() : super.created() {
print("CONSTRUCTING RADIAL SELECTOR");
print(children);
}
filterByType(Type t, List<Element> elems) {
print("FILTER BY TYPE CALLED");
List<Element> newElems = new List<Element>();
for (var e in elems) {
if (e.runtimeType == t)
newElems.add(e);
}
return newElems;
}
}
这里是对应的html:
<link rel="import" href="packages/polymer_ui_elements/polymer_ui_icon_button/polymer_ui_icon_button.html">
<polymer-element name="radial-selector">
<template>
<style>
:host {
display: block;
margin: 100px
}
</style>
<script>console.log("HEY");</script>
<div id="stem">
<img src = "{{img}}" alt ="Radial stem"/>
<template repeat = "{{child in children | filterByType(ImageElement)}}">
<polymer-ui-icon-button src = {{child.src}}></polymer-ui-icon-button>
</template>
</div>
</template>
<script type="application/dart" src="radialselector.dart"></script>
</polymer-element>
【问题讨论】:
标签: data-binding dart dart-polymer