Получение iron-data-table для рендеринга демо-данных

Когда я запускаю свой код в этом JSbin, я ожидаю iron-data-table для рендеринга с заполненными данными, аналогично тому, как это делается на этой демонстрационной странице. Вместо этого отображаются только заголовки таблицы, но остальные ячейки не заполняются.

Какие изменения можно внести в JSbin для достижения желаемого поведения?

http://jsbin.com/hepebapori/1/edit?html,console,output
<!DOCTYPE html>
<html>  
  <head>
    <base href="https://polygit.org/polymer+:master/components/">
    <link rel="import" href="polymer/polymer.html">

    <script src="webcomponentsjs/webcomponents-lite.min.js"></script>

    <link rel="import" href="iron-ajax/iron-ajax.html">
    <link rel="import" href="paper-button/paper-button.html">

    <link href="https://rawgit.com/saulis/iron-data-table/master/iron-data-table.html" rel="import">

  </head>
  <body>
    <dom-module id="x-foo">
      <template>
        <style>
        </style>
        <paper-button on-tap="msg">Click Me</paper-button>

        <iron-ajax auto
          url="https://saulis.github.io/iron-data-table/demo/users.json" 
          last-response="{{users}}"
          >
        </iron-ajax>
        <iron-data-table selection-enabled items="[[users.results]]">
          <data-table-column name="Picture" width="50px" flex="0">
            <template>
              <img src="[[item.user.picture.thumbnail]]">
            </template>
          </data-table-column>
          <data-table-column name="First Name">
            <template>[[item.user.name.first]]</template>
          </data-table-column>
          <data-table-column name="Last Name">
            <template>[[item.user.name.last]]</template>
          </data-table-column>
          <data-table-column name="Email">
            <template>[[item.user.email]]</template>
          </data-table-column>
        </iron-data-table>

      </template>
      <script>
        (function(){
          'use strict';
          Polymer({
            is: 'x-foo',
            msg: function() {
              console.log('This proves Polymer is working!');
            },
          });
        })();
      </script>
    </dom-module>
    <x-foo></x-foo>
  </body>
</html>

2 ответа

Решение

Ваша проблема заключается в импорте iron-data-table, Простое использование rawgit не поможет, так как вам нужно использовать прокси-сервер, такой как polygit, чтобы веб-компоненты работали (вы уже загружаете Polymer, как этот, но не iron-data-table).

Из-за посредственной документации мне потребовалось некоторое время, чтобы понять, как совместить импорт полимера с iron-data-table,

Две необходимые конфигурации: polymer+:master а также iron-data-table+Saulis+:master,

В сочетании ваш base тег выглядит так:

<base href="https://polygit.org/polymer+:master/iron-data-table+Saulis+:master/components/">

При этом вы можете импортировать элемент так же, как остальные:

<link rel="import" href="iron-data-table/iron-data-table.html">

Работает JSbin (протестировано в Google Chrome)

Чтобы начать использовать iron-data-table в вашем проекте, вам необходимо:

  1. скачать пакеты:
bower i iron-data-table -S

bower install --save PolymerElements/iron-ajax
  1. создать HTML-файл, ссылающийся на эти пакеты:
<html>
<head>
    <title></title>
  <meta charset="utf-8" />
    <link rel="import" href="bower_components/polymer/polymer.html">
    <link rel="import" href="bower_components/iron-ajax/iron-ajax.html" />
    <link rel="import" href="bower_components/iron-data-table/iron-data-table.html">
</head>
<body>
    <template is="dom-bind">
        <iron-ajax url="data.json" last-response="{{data}}" auto></iron-ajax>
        <iron-data-table items="[[data]]">
            <data-table-column name="First Name">
                <template>
                    [[item.name.first]]
                </template>
            </data-table-column>
            <data-table-column name="Last Name">
                <template>
                    [[item.name.last]]
                </template>
            </data-table-column>
        </iron-data-table>
    </template>
</body>
</html>
  1. создайте файл data.json в том же месте, где находится html-файл:
[
  {"name": {
    "title": "miss",
    "first": "donna",
    "last": "davis"
  }},
  {
    "name": {
      "title": "mr",
      "first": "samuel",
      "last": "kelley"
    }
  },
  {"name": {
    "title": "ms",
    "first": "katie",
    "last": "butler"
  }}
]
Другие вопросы по тегам