我正在使用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>
在上表中,我想遍历每个条目,如果已经选中或选中,则返回所有选中的案例编号的数组。在我的客户端脚本中,到目前为止我有类似的内容:
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
});
};
我对如何在客户端和服务器脚本之间编写脚本感到困惑。一旦我获得了案例编号数组,我该如何将其传递给服务器?
答案 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/