2014-09-30 7 views
1

У меня есть класс, определенный в дротик, который выглядит следующим образом:Доступ к данным из пользовательского объекта в повторенный Список

class Page extends Object with Serializable { 
    String name; 

    Page(this.name); 

    String toString() { 
    return name; 
    } 
} 

и пользовательский полимерный элемент структурированным, как это:

<polymer-element name="sidebar-list"> 
    <template> 
    <ul> 
     <template repeat="{{page in pages | enumerate}}"> 
     <li>{{page.value}}</li> // what do I call here to get the name of the page? 
     </template> 
    </ul> 
    </template> 
</polymer-element> 

и метод, который определяет полимерный объект:

@CustomTag('sidebar-list') 
class SidebarList extends PolymerElement { 
    final List<Page> pages = <Page>[new Page('Page 1'), new Page('Page 2'), new Page('Page 3')]; 

    SidebarList.created() : super.created(); 
} 

Pages - это список Page, определенный в пользовательском полимере.

Мой вопрос заключается в следующем: как мне обратиться к методу внутри класса с помощью заполнителя полимерного элемента? Я пробовал все логические вещи вроде {{page.value.toString()}} и {{page.value.name}} и {{page.name}}, но ничего не работает.

Интересно, что если List имеет строку, а не страницы, {{page.value}} возвращает строку, как ожидалось.

Возможно ли это?

Большое вам спасибо за помощь! При необходимости я могу предложить любые разъяснения.

ответ

1

С | enumerate вы должны использовать

<li>{{page.value.name}}</li> 

без | enumerate

<li>{{page.name}}</li> 

Если вы не инициализировать поле как

final List<Page> pages = <Page>[new Page('Page 1'), new Page('Page 2'), new Page('Page 3')]; 

вам нужно добавить @observable поэтому Polymer распознает, когда было назначено новое значение.

@observable 
final List<Page> pages; 
+1

Спасибо! Ваше изменение отлично работает с тегом @observable! Я ценю помощь. –

Смежные вопросы