【问题标题】:spModal: "shared" optionspModal:“共享”选项
【发布时间】:2022-11-24 13:30:10
【问题描述】:

spModal 似乎有一个名为“共享”的选项,如下所示:https://github.com/service-portal/x-archive/blob/master/documentation/spModal.md(向下滚动到共享)。

我正在努力让它发挥作用。

在我们的服务门户中,我有一个包含加载小部件的客户端脚本的页面,我按照上面的链接在此处添加了“共享”选项:

function onLoad() {
    if (g_scratchpad.canWrite && !g_form.isReadOnly('u_custom_company') && spModal) {

        var wait = setInterval(function() {
            var vendorEle = this.document.querySelector('#u_custom_company > .form-group');
            if (!vendorEle) {
                return;
            }
            
            var ccompany = {};
            
            var btn = this.document.createElement('button');
            btn.innerHTML = 'Add New Custom Company';
            btn.className = 'btn btn-sm btn-primary m-t-sm';
            btn.onclick = function() {
                spModal.open({
                    title: 'Add New Custom Company',
                    widget: 'new_custom_company',
                    footerStyle: { display: "none" },
                    shared: ccompany
                }).then(function() {
                        // Shared object was updated
                        console.log(ccompany);
                    });

            };
            vendorEle.appendChild(btn);

            clearInterval(wait);
        }, 500);
    }
}

在上面的脚本中,console.log() 的结果一直是“未定义”。

然后在我的自定义小部件的客户端脚本中,我不确定如何为这个共享变量赋值,以便上面的客户端脚本可以访问它。到目前为止,这是我尝试过的:

function($scope) {
        /* widget controller */
        var c = this;
        c.submit = function() {

            if ( $('#name').val() && ( $('#idone').val() || $('#idtwo').val() )) {
                c.data.action = 'createCustomCompany';
                c.server.update().then(function() {
                                    c.widget.options.shared = $scope.data.custom_companay.sys_id;

                                    });
                            
                // close modal popup when submit is clicked
                $scope.$parent.$parent.buttonClicked({ label: "Submit", submit: true });
            } else {
                $('.errormessage').show();
            }
        };
}

custom_company.sys_id 正在由我的服务器脚本填充并包含一个 sys_id,例如新创建的自定义公司记录。

我不确定如何将数据从$scope.data.custom_companay.sys_id 移交给第一个客户端脚本中的变量?

【问题讨论】:

    标签: javascript angularjs servicenow


    【解决方案1】:

    可能有点晚了,但在这里添加它以防万一将来有人遇到同样的问题。

    您不能通过 spModal 设置小部件选项属性。相反,使用小部件输入属性。 要从 spModal 访问数据,您需要在小部件的服务器脚本组件中编写代码。

    (function() {  
      /* populate the 'data' object */
      /* e.g., data.table = $sp.getValue('table'); */
    
         if(input && input.shared){
           
             input.shared= "value from controller";
          }
     })();
    

    【讨论】:

      猜你喜欢
      • 2013-08-07
      • 2012-05-01
      • 2017-07-05
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      相关资源
      最近更新 更多