ServiceNow angularjs:如何将服务器脚本值传递给客户端脚本

问题描述:

我正在使用ServiceNow,并且正在创建一个窗口小部件,该窗口小部件将窗体嵌入到窗体中。我想预先填充模态表单中的一些字段,但我不确定如何执行此操作。ServiceNow angularjs:如何将服务器脚本值传递给客户端脚本

这是我的一个按钮的HTML打开了模态窗口:

<div> 
    <input class="btn btn-support" ng-click="c.onbSupport()" type="button" value="Ask a Question"> 
</div> 

我的客户端脚本是这样的:

function($scope,spModal) { 
    /* widget controller */ 
    var c = this; 

     c.onbSupport = function(){ 
     spModal.open({ 
      title: 'Submit Your Question', 
      widget: 'form-new', 
      widgetInput: {table: 'support_tickets'}, 
      buttons: [] 
     }).then(function(){ 
    })  
    } 
} 

最后,这里是我的服务器脚本:

var usr = gs.getUserID(); 
    var gr = new GlideRecord('info'); 
    gr.addQuery('opened_for', usr); 
    gr.query(); 
    if(gr.next()) { 
     data.parent = gr.getValue('number'); 
     data.short_description = gr.getValue('short_description'); 
    } 

在模态形式中,我有两个字段(parent_case和category),我希望预填充数据分别为.parent和data.short_description。要将服务器脚本值传递给HTML,我知道你可以做{{data.parent}}。但是,如何将这些值传递到生成模态窗体的客户端脚本中?

您需要将值传递给客户端脚本和“catch”。

我假设你正在尝试传递多个值,所以你需要一个数组来保存值并传递给客户端脚本端。

服务器脚本:

var records=[]; //define array first 
var usr = gs.getUserID(); 
var gr = new GlideRecord('info'); 
gr.addQuery('opened_for', usr); 
gr.query(); 
if(gr.next()) { 
    var rec={} //define a record 
    rec.parent = gr.getValue('number'); 
    rec.short_description = gr.getValue('short_description'); 
    records.push(rec); //populate array with records 
} 
data.records=records; // you need to assign your array as data 

客户端脚本:

function($scope,spModal) { 
    /* widget controller */ 
    var c = this; 
    var infos=c.data.records;//this is the "catch" part 
} 

注:我没有测试此代码。