Netsuite SuiteScript 2.0 addButton是否应调用函数?

Netsuite SuiteScript 2.0 addButton是否应调用函数?,netsuite,suitescript,Netsuite,Suitescript,假设我有以下代码片段,它基本上是一个带有按钮的表单。单击后,我想执行一个函数: define(['N/ui/serverWidget', 'N/search', 'N/https'], function(serverWidget, search, https) { function onRequest(context) { if (context.request.method === 'GET') { var form = serverWidget.createForm({

假设我有以下代码片段,它基本上是一个带有按钮的表单。单击后,我想执行一个函数:

define(['N/ui/serverWidget', 'N/search', 'N/https'],
function(serverWidget, search, https) {
function onRequest(context) {
  if (context.request.method === 'GET') 
  {
    var form = serverWidget.createForm({
      title: 'Some Form'
    });
    // some code
    form.addButton({
      id : '_buttonId',
      label : 'Button Label',
      functionName: "someFunctinonIWantToCallOnClick(myParam)"
    });
      context.response.writePage(form)
    } else {
      // some other code
    }
  }
function someFunctinonIWantToCallOnClick(myParam)
{
  // some code
}
return {
  onRequest: onRequest
};
});
根据NetSuite的文档:

options.functionName
一串
可选择的

单击事件时要触发的函数名。 2016版第1版


我做错了什么

你的例子有很多地方不对劲

  • 你实际上并不是在写表格。最终,您需要:

    context.response.writePage(表单)

  • 您要调用的函数仅在服务器上。它未在客户端上定义。您需要包含具有该功能的客户端脚本:

    define(['N/ui/serverWidget', 'N/search', 'N/https'],
    function(serverWidget, search, https) {
    function onRequest(context) {
      if (context.request.method === 'GET') 
      {
        var form = serverWidget.createForm({
          title: 'Some Form'
        });
        // some code
        form.addButton({
          id : '_buttonId',
          label : 'Button Label',
          functionName: "someFunctinonIWantToCallOnClick(myParam)"
        });
          context.response.writePage(form)
        } else {
          // some other code
        }
      }
    function someFunctinonIWantToCallOnClick(myParam)
    {
      // some code
    }
    return {
      onRequest: onRequest
    };
    });
    
    form.clientScriptModulePath='./myFormClient.js'


  • 你的例子有很多地方不对劲

  • 你实际上并不是在写表格。最终,您需要:

    context.response.writePage(表单)

  • 您要调用的函数仅在服务器上。它未在客户端上定义。您需要包含具有该功能的客户端脚本:

    define(['N/ui/serverWidget', 'N/search', 'N/https'],
    function(serverWidget, search, https) {
    function onRequest(context) {
      if (context.request.method === 'GET') 
      {
        var form = serverWidget.createForm({
          title: 'Some Form'
        });
        // some code
        form.addButton({
          id : '_buttonId',
          label : 'Button Label',
          functionName: "someFunctinonIWantToCallOnClick(myParam)"
        });
          context.response.writePage(form)
        } else {
          // some other code
        }
      }
    function someFunctinonIWantToCallOnClick(myParam)
    {
      // some code
    }
    return {
      onRequest: onRequest
    };
    });
    
    form.clientScriptModulePath='./myFormClient.js'


  • 嗨,谢谢你的回复。1.context.response.writePage(表单);就在else语句之前。2.这是有道理的,所以如果我理解正确:我需要将SomeFunctionIniWantToCallOnClick(myParams)移动到客户端脚本,将其绑定到表单,然后我的按钮将调用该函数?您好,感谢您的响应。1.context.response.writePage(表单);就在else语句之前。2.这是有道理的,所以如果我理解正确:我需要将SomeFunctionIniWantToCallOnClick(myParams)移动到客户端脚本,将其绑定到表单,然后我的按钮将调用该函数?