2017-02-10 1 views
0

Angenommen, ich habe das folgende Snippet, bei dem es sich im Grunde genommen um ein Formular mit einem angefügten Button handelt. Auf klicken, möchte ich eine Funktion auszuführen:SuiteScript 2.0 addButton sollte eine Funktion aufrufen?

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

Nach der Dokumentation des NetSuite: options.functionName string optional

Der Funktionsname auf einem Click-Ereignis ausgelöst werden. Version 2016 Release 1

Was mache ich falsch?

Antwort

1

Es gibt eine Reihe von Fehlern in Ihrem Beispiel.

  1. Sie schreiben nicht wirklich das Formular. Schließlich benötigen Sie:

    context.response.writePage (Formular);

  2. Ihre Funktion, die Sie anrufen möchten, befindet sich nur auf dem Server. Es ist nicht auf dem Client definiert. Sie müssen ein Clientskript mit dieser Funktion einschließen:

    form.clientScriptModulePath = './myFormClient.js';

+0

Hallo, danke für die Antwort. 1. context.response.writePage (Formular); ist da, direkt vor der Else-Anweisung. 2. Das macht Sinn, wenn ich es richtig verstanden habe: Ich muss das someFunctinonIWantToCallOnClick (myParams) in ein Client-Skript verschieben, es an das Formular binden und dann ruft meine Schaltfläche die Funktion auf? – user2187935

+0

Ja. Das ist richtig. – bknights

Verwandte Themen