ServiceNow Сервисный портал AngularJS Accordian Widget не работает

Я новичок в serviceNow и пытаюсь создать Accordian Widget для отображения информации в таблице, сгруппированной по ProjectName.

Когда я запускаю этот код в редакторе виджетов, появляется аккордеон, но {{mytable.id}} не заполняется и отображаются только названия проектов.

Кроме того, разворачивается / открывается только верхнее имя проекта, которое, я думаю, связано с неуникальным идентификатором.

Я не знаю, как это исправить.

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="panel-group" id="accordian">
  <div class="panel panel-{{mytable.id}}" ng-repeat="mytable in data.mytables">
    <div class="panel-heading" role="tab" id="heading_{{::mytable.pid}}">
      <div class="panel-group" id="accordian">
        <div class="panel panel-{{mytable.id}}" ng-repeat="mytable in data.mytables">
          <div class="panel-heading" role="tab" id="heading_{{::mytable.pid}}">
            <span class=”panel-title”>
  <a role=”button” data-toggle=”collapse” href=”#collapse_{{mytable.id}}” aria-expanded=”true” aria-controls=”collapse_{{::mytable.id}}”>
   <i class=”fa fa-chevron-down”></i>{{::mytable.project_name}} <span class=”badge”>{{::mytable.count}}</span>
            </a>
            </span>
          </div>
          <div id=”#collapse_{{::mytable.id}}” class=”panel-collapse collapse” role=”tabpanel” aria-labelledby=”heading_{{::mytable.id}}”>
            <div class=”panel-body”>
              <table class=”table”>
                <thead>
                  <tr>
                    <th>Month</th>
                    <th>Year</th>
                    <th>PDF</th>
                    <th>XLS</th>
                    <th>
                </thead>
                <tbody>
                  <tr>
                    <td>{{::mytable.invoice_month}}</td>
                    <td>{{::mytable.invoice_year}}</td>
                    <td>{{::mytable.pdf}}</td>
                    <td>{{::mytable.xls}}</td>
                  </tr>
                </tbody>
              </table>
            </div>
          </div>
        </div>

/*Client Script*/
function($scope){
  var c = this;
}


/*Service Script*/
(function() {
  data.mytables = [];
  
  var gr = new GlideAggregate('x_project_table');
    gr.addActiveQuery();
    gr.groupBy('project_name');
    gr.query();
    
    while(gr.next()){
      var mytable = {};
      mytable.project_name =  gr.getDisplayValue('project_name');
      mytable.invoice_month =  gr.getDisplayValue('invoice_month');
      mytable.invoice_year =  gr.getDisplayValue('invoice_year');
      mytable.pdf =  gr.getDisplayValue('pdf');
      mytable.xls =  gr.getDisplayValue('xls');
      data.mytables.push(mytable);
    }
})();
      

1 ответ

{{mytable.id}} не заполняется, потому что вы не указали его в сценарии сервера.

Вам нужно что-то вроде mytable.id= gr.getValue('sys_id');

Другие вопросы по тегам