2014-01-26 46 views
4

我在Dart中有一個自定義數據類型,我想使用template repeat進行迭代。這裏是有問題的數據類型的精簡版本:在Dart中製作一個可聚合元素內迭代的數據類型

class Note { 
    String content; 
    Note(this.content); 
} 

class Notebook { 
    List<Note> notes; 
    Notebook(this.notes); 
} 

我希望能夠通過Note S IN一個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數據類型來做同樣的事情。這確實似乎工作

一種方式是一個toList()方法連接到Notebook類:

List<Note> toList() => notes; 

但我希望能實現這一目標而無需首先轉換爲List

回答

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; 
} 
相關問題