如何从QuickBase自定义脚本

时间:2015-10-12 17:00:57

标签: momentjs getscript quickbase

我一直在为QuickBase编写自定义脚本,这需要一些日期操作。我决定使用moments.js,因为我在quickbase中使用它,所以我使用$ .getscript动态加载moment.js。我之前使用其他插件(jquery.md5.min.js)完成了这个过程,这可以正常工作。

问题是,即使正确读取了moment.js,当我尝试使用它时(例如,请参阅我为调试添加的console.log(),我收到一条错误消息,告诉我“时刻不是定义的”。

我知道moment.js正在被读取,因为我已经在加载后将它转储到控制台中,并且我只是在通过异步方法加载它之后才尝试使用它的函数。我还玩过一些简单的jsfiddles,以确保我正确地调用它。我还检查了几次网址,这是正确的。我的其余代码也是正确的(如果我用moment()注释掉行,它按预期工作)。

$.getScript(domain + dbid_app + urlMoments)
  .done(function(script, textStatus) {
    rightNow = moment();
    dfd.resolve();  // Resolve when the script is finished loading.
    console.log("moments.js has finished loading.\n\n" + textStatus);
    console.log(rightNow);
  })
  .fail(function( jqxhr, settings, exception ) {
    console.log( "Triggered ajaxError handler." );
});

如何调用moment()函数?在运行小提琴时,在查看了许多在线示例之后,它就像:var myTime = moment();一样简单,但这不符合我的脚本。有没有机会,即使用$ .getscript()加载moment.js后,它还没有被执行?从我在moment.js的源代码中看到的,应该自动调用工厂函数,不应该吗?

(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
global.moment = factory()

}

最后一件事:url指向我使用moments.js创建的QuickBase代码页。这也是我如何使用jquery.md5.js而没有任何问题。

1 个答案:

答案 0 :(得分:0)

看起来您的问题可能是由Quickbase加载了不同版本的moment.js引起的。具体来说,Quickbase表单在某些容量中使用Moment 2.8.4,并使用RequireJS加载。按照Moment使用RequireJS的示例,我能够使用以下代码获取一个时刻对象:

require(['moment'], function(){
    moment();
});

rightNow = moment();

我希望这可以帮助您解决问题。