2017-10-04 27 views
0

私はServiceNowで作業しており、印刷オプションとともにケースのリストを表示するウィジェットを作成しています。選択されたCases and Printing Optionに基づいて配列を生成したいのですが、クライアントスクリプトとサーバースクリプトの間で問題を渡す際に問題があります。以下は私のHTMLとウィジェットがどのように見えるかのスナップショットです:上記の表にServiceNow angularjsクライアント/サーバスクリプト通信

<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 
    }); 
}; 

私はクライアントとサーバーのスクリプトの間でスクリプトをどのようにしているのかかなり混乱しています。ケースナンバーの配列を取得したら、それをどのようにサーバーに渡すのですか?

答えて

0

クライアントスクリプトでは、データをサーバスクリプトに送信して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 = []; 
     }); 
    } 
} 

サーバースクリプト

(function() { 

    // input here contains c.data from client script 
    if (input && input.cases) { 
     for (var i = 0; i < input.cases.length; i++) { 
      // write to system log 
      gs.info(input.cases[i]); 
     } 
    } 
}); 

この程度の良いチュートリアルがhttps://serviceportal.io/communicating-between-the-client-script-and-the-server-script-of-a-widget/

であります
関連する問題