在 2.x API 中将变量从 suitelet 传递到 clientscript?
Pass variables from suitelet to clientscript in 2.x API?
我用 suitelet 构建了一个表单,它有一个子列表、下拉列表和一个按钮。用户在子列表上勾选一些选项后,按下一个按钮,所选项目通过 rest 发送到其他地方。
套房:
@NApiVersion 2.x
*@NScriptType Suitelet
*/
define(['N/ui/serverWidget', 'N/search', 'N/https', 'N/record'],
function(serverWidget, search, https, record) {
function onRequest(context) {
if (context.request.method === 'GET') {
var form = serverWidget.createForm({ ... });
form.clientScriptModulePath = 'path/to/client/script';
// code to build a sublist, add a button and write page
} return {
onRequest: onRequest
};
});
然后,我的客户端脚本类似于:
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(
[ 'N/currentRecord', 'N/https' ],
function(currentRecord, https) {
functionSendRequest(sublist //the sublist that I want to get from the suitelet)
{
//code to build json string and send http request
} return {
saveRecord: test
}
});
现在,在这上面花了几个小时之后,N/currentRecord 引起了我的注意(我是 netsuite 的新手),它对我来说似乎是一个问题解决者,因为它检索当前在客户端上下文中处于活动状态的记录。它非常适合下拉菜单,并且有一个方法 getSublist(options),尽管它 returns record.Sublist 只有 getColumn() 方法。因此,它不会真正为我工作。那么,有没有办法在按下按钮后将子列表参数从 suitelet 传递给客户端脚本?
要解决您的问题,您可以像这样使用 currentRecord 中的 getSublistValue:
var currentRec = currentRecord.get();
var numLines = currentRec.getLineCount({
sublistId: 'item'
});
var sublistFieldValue = currentRec.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: 3
});
如果你真的想将某些东西从 Suitelet 传递到客户端函数,你必须这样设置你的按钮:
var someTextToPassToTheClientscript = 'The Suitelet send its regards';
form.addButton({
id : 'custpage_some_button',
label : 'MyButton',
functionName : 'functionSendRequest("' + someTextToPassToTheClientscript + '")'
});
然后让您的客户端脚本像这样接收它:
/*
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(
['N/currentRecord', 'N/https'],
function (currentRecord, https) {
functionSendRequest(textReceivedFromSuitelet) {
//code to build json string and send http request
}
return {
functionSendRequest : functionSendRequest
}
});
我用 suitelet 构建了一个表单,它有一个子列表、下拉列表和一个按钮。用户在子列表上勾选一些选项后,按下一个按钮,所选项目通过 rest 发送到其他地方。
套房:
@NApiVersion 2.x
*@NScriptType Suitelet
*/
define(['N/ui/serverWidget', 'N/search', 'N/https', 'N/record'],
function(serverWidget, search, https, record) {
function onRequest(context) {
if (context.request.method === 'GET') {
var form = serverWidget.createForm({ ... });
form.clientScriptModulePath = 'path/to/client/script';
// code to build a sublist, add a button and write page
} return {
onRequest: onRequest
};
});
然后,我的客户端脚本类似于:
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(
[ 'N/currentRecord', 'N/https' ],
function(currentRecord, https) {
functionSendRequest(sublist //the sublist that I want to get from the suitelet)
{
//code to build json string and send http request
} return {
saveRecord: test
}
});
现在,在这上面花了几个小时之后,N/currentRecord 引起了我的注意(我是 netsuite 的新手),它对我来说似乎是一个问题解决者,因为它检索当前在客户端上下文中处于活动状态的记录。它非常适合下拉菜单,并且有一个方法 getSublist(options),尽管它 returns record.Sublist 只有 getColumn() 方法。因此,它不会真正为我工作。那么,有没有办法在按下按钮后将子列表参数从 suitelet 传递给客户端脚本?
要解决您的问题,您可以像这样使用 currentRecord 中的 getSublistValue:
var currentRec = currentRecord.get();
var numLines = currentRec.getLineCount({
sublistId: 'item'
});
var sublistFieldValue = currentRec.getSublistValue({
sublistId: 'item',
fieldId: 'item',
line: 3
});
如果你真的想将某些东西从 Suitelet 传递到客户端函数,你必须这样设置你的按钮:
var someTextToPassToTheClientscript = 'The Suitelet send its regards';
form.addButton({
id : 'custpage_some_button',
label : 'MyButton',
functionName : 'functionSendRequest("' + someTextToPassToTheClientscript + '")'
});
然后让您的客户端脚本像这样接收它:
/*
* @NApiVersion 2.x
* @NScriptType ClientScript
*/
define(
['N/currentRecord', 'N/https'],
function (currentRecord, https) {
functionSendRequest(textReceivedFromSuitelet) {
//code to build json string and send http request
}
return {
functionSendRequest : functionSendRequest
}
});