2015-08-05 4 views
0

У меня есть элемент таблицы, где декларация заключается в следующемdom-if проблема в полимере?

<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, после запроса железа 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> 

Итак, моя проблема заключается в том, что я не могу корректно отображать информацию, и я думаю, причина для использования РОМ повтора. Моя информация отображается следующим образом: enter image description here

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

ответ

0

После того, как я исследовал немного больше, я нашел here, что моя проблема была ошибкой полимера. Чтобы решить эту проблему, необходимо изменить две функции в файле 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; 
     } 
    } 
    } 
}, 

Here вы можете найти файл дом-if.html.