【问题标题】:Issues with collapsible table row可折叠表格行的问题
【发布时间】:2019-08-07 02:21:00
【问题描述】:

我们的团队正在尝试在 ServiceNow 中创建一个具有可展开/可折叠行的小部件。我们很难让它正常工作。以下是我们目前的代码:

<table class="table table-responsive">
  <thead>
    <tr>
      <th></th>
      <th ng-repeat="field in data.fields_array track by $index" ng-click="setOrderBy(field)" tabindex="0">
        <div class="th-title" aria-label="${Sort by } {{data.column_labels[field]}}">{{data.column_labels[field]}}
          <i class="fa" ng-if="field == data.o" ng-class="{'asc': 'fa-chevron-up', 'desc': 'fa-chevron-down'}[data.d]" aria-label="${Sorted by } {{data.column_labels[field]}} {{data.d == 'asc' ?  '${Ascending}': '${Descending}' }}"></i>
        </div>
      </th>
    </tr>
  </thead>
  <tbody>
    <tr ng-repeat="item in data.list track by item.sys_id" data-toggle="collapse" href="#{{item.pcs_task_type_sysID}}" aria-expanded="true" aria-controls="collapseOne" role="button">  <!--ng-click="expand(item)" class="clickableTableRow" -->   
      <td>
        <i ng-if="field[$index] == field[0]" ng-class="{'pull-center text-success glyphicon glyphicon-check' : item.completed !='Not Completed','text-danger glyphicon glyphicon-warning-sign' : item.completed == 'Not Completed'}"></i>
      </td>
      <td role="text" aria-label="{{item[field].display_value}}" class="pointer" ng-class="{selected: item.selected}" ng-repeat="field in ::data.fields_array track by $index" data-field="{{::field}}" data-th="{{::data.column_labels[field]}}">
        {{::item[field].display_value}}
      </td>
      <td>
        <div id="{{item.pcs_task_type_sysID}}" class="collapse">
          <sp-widget widget="item.widget"></sp-widget>
        </div>
      </td>
    </tr>
  </tbody>
</table>

上面的代码产生以下内容(这显然是不正确的):

我知道可折叠 div 应该在 a 中而不是 , 但是当我将它向下移动到它自己的行时,如下所示,新行根本不会展开。

<table class="table table-responsive">
      <thead>
        <tr>
          <th></th>
          <th ng-repeat="field in data.fields_array track by $index" ng-click="setOrderBy(field)" tabindex="0">
            <div class="th-title" aria-label="${Sort by } {{data.column_labels[field]}}">{{data.column_labels[field]}}
              <i class="fa" ng-if="field == data.o" ng-class="{'asc': 'fa-chevron-up', 'desc': 'fa-chevron-down'}[data.d]" aria-label="${Sorted by } {{data.column_labels[field]}} {{data.d == 'asc' ?  '${Ascending}': '${Descending}' }}"></i>
            </div>
          </th>
        </tr>
      </thead>
      <tbody> <!-- id="{{item.sys_id}}_task_body" class="panel-collapse collapse in dataBlock"-->
        <tr ng-repeat="item in data.list track by item.sys_id" data-toggle="collapse" href="#{{item.pcs_task_type_sysID}}" aria-expanded="true" aria-controls="collapseOne" role="button">  <!--ng-click="expand(item)" class="clickableTableRow" -->   
          <td>
            <i ng-if="field[$index] == field[0]" ng-class="{'pull-center text-success glyphicon glyphicon-check' : item.completed !='Not Completed','text-danger glyphicon glyphicon-warning-sign' : item.completed == 'Not Completed'}"></i>
          </td>
          <td role="text" aria-label="{{item[field].display_value}}" class="pointer" ng-class="{selected: item.selected}" ng-repeat="field in ::data.fields_array track by $index" data-field="{{::field}}" data-th="{{::data.column_labels[field]}}">
            {{::item[field].display_value}}
          </td>
        </tr>
        <tr>
          <td>
            <div id="{{item.pcs_task_type_sysID}}" class="collapse"><!--ng-if="item.showDescriptor" -->
              <sp-widget widget="item.widget"></sp-widget>
            </div>
          </td>
        </tr>
      </tbody>
    </table>

为了让它正常工作,我们缺少什么?

【问题讨论】:

  • (1) 没有什么是“显而易见的”。解释为什么它不正确。 (2) 您帖子中的 html 标签未显示。现在它说“我知道可折叠的 div 应该在一个”中,而不是 ,

标签: angularjs twitter-bootstrap html-table servicenow collapsable


【解决方案1】:

我在 html 元素后面的注释中看到 ng-click="expand(item)",但我没有看到它实际出现在元素中,因此单击时永远不会调用该函数。

data-toggle 不足以将 item.showDescriptor 的值更改为 true 或 false(现在看来,data-toggle 是唯一试图控制显示的东西)......我'我也不确定 tr 元素上的 href 是否会成功...

<tr ng-repeat="item in data.list track by item.sys_id">
<td>
<span ng-click="expand(item)">
<i ng-class="{'pull-center text-success glyphicon glyphicon-check' : item.completed !='Not Completed','text-danger glyphicon glyphicon-warning-sign' : item.completed == 'Not Completed'}"></i>
Click me to expand
</span>
</td>
<td>
<span ng-if="item.showDescriptor">
I should conditionally show
</span>
</td>
</tr>

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 2013-06-09
    • 2019-12-11
    • 2016-12-26
    • 2021-01-04
    • 1970-01-01
    • 2021-09-19
    • 1970-01-01
    • 2021-07-18
    相关资源
    最近更新 更多