ServiceNow angularjs客户端/服务器脚本通信

时间:2017-10-04 21:20:54

标签: angularjs arrays servicenow

我正在使用ServiceNow,我正在创建一个窗口小部件,显示案例列表以及打印选项。我想基于所选的案例和打印选项填充数组,但是在客户端和服务器脚本之间传递问题时遇到问题。下面是我的HTML和小部件的快照:

<div class="btn-group" role="group">  
    <button id="btnGroupDrop1" type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">  
      Printing Options   <i class="fa fa-caret-down"/>   
      </button>  
      <div class="dropdown-menu" aria-labelledby="btnGroupDrop1" >  
      <li ng-repeat="print in c.docSetPrint">  
          <a class="dropdown-item" href="#">{{print.document_set_name}}</a>  
        </li>  
      </div>  
    </div>  

<table id="print_table" class="table table-striped table-hover table-responsive">  
    <thead>  
      <tr>  
        <th><input type="checkbox" id="selectAll"/></th>  
          <th>${Case Number}</th>  
          <th>${Short Description}</th>  
          <th>${Start Date}</th>  
          <th>${Work Location}</th>  
        </tr>  
      </thead>  
      <tbody>  
      <tr ng-repeat="item in c.ONCase track by $index">  
        <td><input type="checkbox" id="{{item.number}}"/></td>  
          <td>{{item.number}}</td>  
          <td>{{item.short_description}}</td>  
          <td>{{item.start_date}}</td>  
          <td>{{item.location}}</td>            
        </tr>  
      </tbody>  
    </table>

enter image description here

在上表中,我想遍历每个条目,如果已​​经选中或选中,则返回所有选中的案例编号的数组。在我的客户端脚本中,到目前为止我有类似的内容:

c.printDocs = function(){
    var arr = [];

    for(i=0; i<c.data.ONCase.length; i++){
        if(document.getElementById(c.data.ONCase[i].number).checked == true){
            arr.push({
                case_num: c.dataONCase.number <--??
            });
        }
    }
    c.server.get({
        action: 'print_docs',
        cases: arr
    })then(function(response) {
        // do stuff after
    });
};

我对如何在客户端和服务器脚本之间编写脚本感到困惑。一旦我获得了案例编号数组,我该如何将其传递给服务器?

1 个答案:

答案 0 :(得分:0)

在客户端脚本上,您可以将要发送到服务器脚本的数据发送到pg_dumpall。然后在服务器脚本上,这可以在c.data对象中找到。

客户端脚本

input

服务器脚本

function () {
    var c = this;

    c.myFunction = function () {
        // populate the c.data object
        c.data.cases= ['CASENUM01','CASENUM02','CASENUMO3'];

        // send the c.data object to the server
        c.server.update().then(function () {
            // do cleanup if needed
            c.data.cases = [];
        });
    }
}

关于此问题的好教程是https://serviceportal.io/communicating-between-the-client-script-and-the-server-script-of-a-widget/