2015-10-12 45 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

相關問題