我无法找到解决以下问题的优雅解决方案。
我创建了一个小的jQuery Mobile小部件,它使用与金额和货币相关的内容丰富了输入字段。为了不重新发明轮子,我已经包含了 autoNumeric.js 插件。例如,在_create
方法中,我正在执行以下操作。
/**
* autoNumeric.js required (https://github.com/BobKnothe/autoNumeric)
*/
(function($, window, document, undefined) {
"use strict";
$.widget("mobile.amountinput", $.mobile.textinput, {
// other code here
_create : function() {
// other code here
$element.autoNumeric('init');
$element.focus(function(event) {
var o = { aDec: ',', aSep : '.', pSign: 's', aSign: '' };
$element.autoNumeric('update', o);
});
$element.blur(function(event) {
var o = { aDec: ',', aSep : '.', pSign: 's', aSign: ' €' };
$element.autoNumeric('update', o);
});
}
});
$.mobile.document.bind("pagecreate create", function(e) {
$.mobile.input.prototype.enhanceWithin(e.target, true);
});
}(jQuery, window, document));
autoNumeric.js 是通过 require.js 加载的,但我想使依赖项显式化(例如在 require.js 模块定义中)。通过这种方式,我可以确定 autoNumeric.js 存在且已正确导入。
有没有办法实现这个目标?
答案 0 :(得分:0)
以下内容应该有效。使用适合您情况的任何内容替换传递给'autonumeric'
的依赖项列表中的define
依赖项。我不确定为什么在参数列表中需要undefined
但我保留了它。
(function (factory) {
// If in an AMD environment, define() our module, else use the
// jQuery global.
'use strict';
if (typeof define === 'function' && define.amd)
define(['jquery', 'autonumeric'], function ($) {
factory($, window, document);
});
else
factory($, window, document);
}(function($, window, document, undefined) {
"use strict";
$.widget("mobile.amountinput", $.mobile.textinput, {
// other code here
_create : function() {
// other code here
$element.autoNumeric('init');
$element.focus(function(event) {
var o = { aDec: ',', aSep : '.', pSign: 's', aSign: '' };
$element.autoNumeric('update', o);
});
$element.blur(function(event) {
var o = { aDec: ',', aSep : '.', pSign: 's', aSign: ' €' };
$element.autoNumeric('update', o);
});
}
});
$.mobile.document.bind("pagecreate create", function(e) {
$.mobile.input.prototype.enhanceWithin(e.target, true);
});
});