2015-10-12 33 views
2

我一直在为QuickBase编写一个自定义脚本,它需要一些日期操作。我决定使用moments.js,因为我在quickbase中使用它,所以我使用$ .getscript动态加载moments.js。我已经使用其他插件(jquery.md5.min.js)完成了此过程,并且此工作正常。如何从QuickBase自定义脚本访问瞬间对象(从moment.js)

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

我知道moment.js正在读取,因为我已经把它加载到控制台后加载,我试图只有在它通过异步方法加载后才使用它的函数。我用几个简单的jsfiddles来玩,只是为了确保我正确地调用了它。我也检查了几次url,它是正确的。我的其他代码也是正确的(如果我用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()加载moments.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而没有任何问题。

回答

0

看起来你的问题可能是由Quickbase加载一个不同版本的moment.js引起的。具体而言,Quickbase表单在某些容量中使用Moment 2.8.4,正在使用RequireJS加载。继片刻的例子使用RequireJS我能得到片刻的对象与下面的代码:

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

rightNow = moment(); 

我希望帮助您解决问题。

+0

非常感谢!您的建议非常有效。 – LeoNoAioria

相关问题