дом-если вопрос в полимере?

У меня есть элемент таблицы, где объявление выглядит следующим образом

    <euro-table id="euroTable" number-visible-rows="10">
        <euro-column title="Id" type="text" key="Id"></euro-column>
        <euro-column title="Descripcion" type="text" key="Descripcion"></euro-column>
        <euro-column title="Abreviatura" type="text" key="ShortName"></euro-column>
        <euro-column title="Tipo" type="object" key="FeeType" objectkey="Descripcion"></euro-column>
        <euro-column title="Monto($)" type="text" key="Monto"></euro-column>
        <euro-column title="Cobrar a" type="array" key="NivelesEscolares" objectkey="Descripcion"></euro-column>
    </euro-table>

Данные добавляются с помощью javascript после запроса iron-ajax. Все работает как надо, за исключением одного: когда я использую dom-repeat для привязки добавленных данных, я использую шаблон <dom-if>, потому что в зависимости от типа столбца я должен получить доступ и отобразить соответствующую информацию. Я использую для этого следующий код:

<template is="dom-repeat" items="{{visibleRows}}" id="tableRow" as="row">
    <tr on-tap="rowSelected" class$="{{getClass(item.active)}}">
        <template is="dom-repeat" items="{{headers}}" id="tableRow2" as="column">
            <template is="dom-if" if="{{getType(column.type, 'object')}}">
                <td>
                    <li>{{getObjectValue(column,row)}}</li>
                 </td>
             </template>
             <template is="dom-if" if="{{getType(column.type, 'array')}}">
                  <td>
                      <template is="dom-repeat" items="{{getDataArray(column,row)}}">
                          <li>{{getObjectValue(column,row)}}</li>
                       </template>
                  </td>
              </template>
              <template is="dom-if" if="{{getType(column.type, 'text')}}">
                  <td>{{getValue(column,row)}}</td>
              </template>
        </template>
      </tr>
 </template>

Итак, моя проблема в том, что я не могу правильно отображать информацию, и я думаю, что причина в использовании dom-repeat. Моя информация отображается следующим образом: введите здесь описание изображения

Информация отсутствует в таблице, я проверяю свою функцию getType, но думаю, что все в порядке. Любая идея об исправлении моей ошибки? Спасибо!


person Flavio Ochoa    schedule 05.08.2015    source источник


Ответы (1)


Изучив немного больше, я нашел здесь, что моя проблема была ошибкой полимера . Для ее решения необходимо изменить две функции в файле Polymer.html. Это функции _wrapTextNodes и _showHideChildren. Я оставлю функции здесь на случай, если у кого-то возникнет такая же проблема.

_wrapTextNodes: function(root) {
  // wrap text nodes in span so they can be hidden.
  for (var n = root.firstChild; n; n=n.nextSibling) {
    if (n.nodeType === Node.TEXT_NODE && n.textContent.trim.length) {
      var s = document.createElement('span');
      root.insertBefore(s, n);
      s.appendChild(n);
      n = s;
    }
  }
},
_showHideChildren: function() {
  var hidden = this._hideTemplateChildren || !this.if;
  if (this._instance) {
    var c$ = this._instance._children;
    for (var i=0; i<c$.length; i++) {
      var c = c$[i];
      if (c.nodeType !== Node.TEXT_NODE) {
        c.style.display = hidden ? 'none' : '';
        c._hideTemplateChildren = hidden;
      }
    }
  }
},

Здесь вы можете найти dom-if .html файл.

person Flavio Ochoa    schedule 05.08.2015