0

我刚开始使用 requireJS,我想知道如何访问需要 jQuery 的常规方法。

假设我有这个方法叫做:displayError,

我怎么称呼它,因为它不再在全局范围内。

我尝试将其设置为窗口:

window.displayError = 函数(消息){ ... }

但这也没有用。

代码如下所示:

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/

4

1 回答 1

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;
});
于 2013-06-06T22:37:23.220 回答