2014-01-26 1 views
4

다트에 template repeat을 사용하여 반복 가능하게하려는 사용자 정의 데이터 유형이 있습니다. 의,다트의 Polymer 요소 내에서 데이터 유형을 반복 가능하게 만들기

<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> 

문제 : 나는 Notebook과 같이에서 Note의 반복 할 수 있도록하려면

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

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

: 여기에서 문제가되는 데이터 유형의 제거 다운 버전은 물론, 그 표준 List이 이런 식으로 반복 될 수 있지만, 내 사용자 정의 Notebook 데이터 유형을 수정하는 방법을 모르겠습니다. 가 제대로 작동한다는 것을

한 가지 방법은 Notebook 클래스에 toList() 방법을 첨부하는 것입니다

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; 
}