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

У меня есть класс, определенный в дротике, который выглядит так:

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}}, но ничего не работает.

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

Это вообще возможно?

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


person James Taylor    schedule 30.09.2014    source источник


Ответы (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;
person Günter Zöchbauer    schedule 30.09.2014
comment
Спасибо! Ваше изменение отлично работает с тегом @observable! Я ценю помощь. - person James Taylor; 01.10.2014