簡體   English   中英

聚合物中的dom-if問題?

[英]dom-if issue in polymer?

我有一個表元素,聲明如下

    <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>

Iron-ajax請求后,使用javascript添加數據。 一切都可以正常工作,除了一件事:當我使用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函數,但我認為還可以。 關於修復錯誤的任何想法? 謝謝!

經過更多研究之后,在這里發現我的問題是聚合物的錯誤。 要解決此問題,必須在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文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM