在SuiteScript 2中使用Underscore

时间:2017-04-14 19:11:20

标签: netsuite suitescript

我正在SS2中编写一个脚本,我遇到了doc,它说我应该在下面做。我已经做到了这一点并且路径是正确的,但它似乎没有看到下划线,因为它在尝试使用它时会以未定义的形式返回。对此有任何帮助都很棒,谢谢 define( [ 'N/email' , 'N/runtime' , 'N/search' , '/SuiteScripts/af_scripts/underscore.js@1.8.3/underscore' ], function( email, runtime, search, _) { function onRequest( context ) {

        var request = context.request;

        var us = _;
    }

    return {
        onRequest: onRequest
    };
} );

var request = context.request; var us = _; } return { onRequest: onRequest }; } );

3 个答案:

答案 0 :(得分:1)

我还没有看到如何这样做。但我发现作品的方式是这样的:

$(document).ready( function() {

   $('.subblock').click( function() {
       $(this).find('input').focus();
   });

   $('.subblock').click( function() {
       $(this).find('select').focus();
   });

});

答案 1 :(得分:1)

我将underscore-min.js放在与Suitescripts相同的文件夹中。

然后,我在同一文件夹中创建了一个名为“ underscoreConfig.json”的配置文件,其内容如下:

{
  "paths":{
    "underscore": "./underscore-min"
  }
}

然后将以下内容添加到脚本中:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 * @NModuleScope SameAccount
 * @NAmdConfig ./underscoreConfig.json
 */
define(['underscore', 'N/record', 'N/search'],
/**
 * @param {underscore} underscore
 * @param {record} record
 * @param {search} search
 */
function(_, record, search) {

现在,我可以在脚本中调用下划线功能了。

例如

var segmentObj = _.findWhere(segmentFields, {id: segmentId});

答案 2 :(得分:1)

就我而言,我使用lodash将HTML文件内容添加到我的Suitelet中 定义模块时,可以像最后一样在末尾插入lodash库

define(['N/file', 'N/record', 'N/search', 'N/ui/serverWidget','./lodash.js'],

但是在函数中,您不应插入任何类似内容

function(file, record, search, serverWidget) {

这里是代码示例,用于使用lodash加载文件并获取其内容

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/file', 'N/record', 'N/search', 'N/ui/serverWidget','./lodash.js'],
/**
 * @param {file} file
 * @param {record} record
 * @param {search} search
 * @param {serverWidget} serverWidget
 */
function(file, record, search, serverWidget) {

    /**
     * Definition of the Suitelet script trigger point.
     *
     * @param {Object} context
     * @param {ServerRequest} context.request - Encapsulation of the incoming request
     * @param {ServerResponse} context.response - Encapsulation of the Suitelet response
     * @Since 2015.2
     */
    function onRequest(context) {

        var templateFile = file.load({
            id: 'filePath'
        });
        //for example.
        var compiled = _.template(templateFile.getContents());

    }

    return {
        onRequest: onRequest
    };

});

注意:

我在文件柜中将文件插入到与Suitelet相同的位置,这就是为什么我使用此相对路径(./lodash.js)的原因,如果Suitelet不在同一文件中,则使用完整路径。