要求JS使用常规函数

时间:2013-06-06 22:22:56

标签: javascript requirejs

我刚开始使用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();
    }
});

http://jsfiddle.net/pQUBZ/

1 个答案:

答案 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;
});