我在Dart中有自定义数据类型,我想使用template repeat
进行迭代。以下是有问题的数据类型的精简版本:
class Note {
String content;
Note(this.content);
}
class Notebook {
List<Note> notes;
Notebook(this.notes);
}
我希望能够在Note
中迭代Notebook
,如下所示:
<polymer-element name="x-notebook=view">
<ul>
<template repeat="{{note in notebook}}">
<li is="x-note-view" note="{{note}}></li>
</template>
</ul>
<script ...></script>
</polymer-element>
问题当然是标准List
可以通过这种方式迭代,但我不知道如何修改我的自定义Notebook
数据类型来做同样的事情。 / p>
的一种方式似乎是将toList()
方法附加到Notebook
类:
List<Note> toList() => notes;
但我希望在没有先转换为List
的情况下实现这一目标。
答案 0 :(得分:5)
阅读polymer_expression
包的来源会发现in
运算符的右侧必须是Iterable
,因此您必须实现此接口。
我做了一个快速测试,以下似乎有效:
import 'dart:collection' show IterableMixin;
// [IterableMixin] implement all methods of [Iterable]
// in terms of [iterator].
class Notebook extends Object with IterableMixin<Note> {
List<Note> notes;
Notebook(this.notes);
get iterator => notes.iterator;
}