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 を使用する主な目的の 1 つは、がらくたをグローバル名前空間から締め出すことです。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 に答える