我刚开始使用requireJS,我想知道如何访问需要jQuery的常规方法。
假设我说这个方法叫做:displayError,
我怎么称它为因为它不再在全球范围内。
我尝试将其设置为窗口:
window.displayError = function(message){ ... }
但这也不起作用。
代码如下所示:
require(['jquery'],function($){
window.show_save_state = function(state, message, time)
{
$(".save-state").remove();
var save_state = $("<div />").addClass("save-state").appendTo("body");
var newMessage = "";
switch (state) {
case 0:
newMessage = lang("error");
save_state.addClass("error");
break;
case 1:
newMessage = lang("wait");
save_state.addClass("wait");
break;
case 2:
newMessage = lang("saved");
save_state.addClass("saved");
break;
}
var mMessage = (typeof message !== "undefined" && message != "") ? message : newMessage;
save_state.html("<span class='save-state-circle'>" + mMessage + "</span>");
save_state.show();
time = (typeof time !== "undefined") ? time : 2000;
time = (typeof message === "undefined" && state == 1) ? 0 : time;
if (time > 0) {
setTimeout(function() {
save_state.fadeOut(200, function() {
save_state.remove();
})
}, time);
}
}
window.hide_save_state = function() {
$(".save_state").remove();
}
});
答案 0 :(得分:3)
使用require的主要目的之一是将垃圾排除在全局命名空间之外。假设您有一个文件con.js
,您可以在其中显示控制台显示消息(包括displayError
),如下所示:
define([
"jquery"
], function(
$
) {
var con = {
displayError: function (message) {
// ...code...
},
displaySomethingElse: function (foo) {
// ...code...
}
};
return con;
});
然后,在最基本的形式中,您可以通过require语句运行此方法,如下所示:
require('con').displayError('Move every zig!');
或者在另一个子模块中:
define([
"con"
], function(
con
) {
var submodule = {
someMethod: function () {
con.displayError('Watership Down');
}
};
return submodule;
});