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

时间:2017-04-07 18:19:35

标签: angularjs modal-dialog servicenow auto-populate

我正在ServiceNow工作,我正在创建一个窗口小部件,它可以拉出一个嵌入了窗体的模式窗口。我想预先填充模态形式的一些字段,但我不确定如何做到这一点。

这是我打开模态窗口的按钮的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),我希望分别预先填充data.parent和data.short_description。要将服务器脚本值传递给HTML,我知道您可以执行{{data.parent}}。但是,如何将这些值放入生成模式窗体的客户端脚本中?

2 个答案:

答案 0 :(得分:0)

您需要将值传递给客户端脚本并“捕获”。

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

服务器脚本:

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
}

注意:我没有测试过这段代码。

答案 1 :(得分:0)

@alperzzz提供了正确的方法。 要移交数据,您必须使用“共享”属性与嵌入式窗口小部件共享记录。在窗口小部件中,您可以填充共享数据。 您可以在docs

中找到所有属性