0

私はDOJO1.8にかなり慣れていないので、require-methodの外部から関数を呼び出す方法を知りたいですか?フェードインおよびフェードアウトするメッセージボックスを実装しようとしています。

メソッドを作成しました:

require(["dojo/dom", "dojo/on", "dojo/domReady!" ], function(dom, on, ready) {

    /*function which shows a msg-box on top of the page */
    var showMsg = function(text) {
        dom.byId("msgbox").innerHTML = text;
    }     
});

わかった!ITは機能しますが、アプリケーションの他の場所から呼び出したいとは思いません。

showMsg("Item saved");

しかし、それは機能しません:Uncaught ReferenceError:showMsgが定義されていません

その参照を取得するにはどうすればよいですか?

ご協力ありがとうございました!

AFX

4

2 に答える 2

0

現状では、ローカル変数を宣言しているため、プログラムの他の場所には表示されません。

たとえば、変数をグローバルにすることができます

window.showMsg = function(text) {
    dom.byId("msgbox").innerHTML = text;
}     

このアプローチの欠点は、アプリケーションが大きくなるにつれて、グローバル変数が増えることになり、メンテナンスが難しくなることです。

そのため、Dojoは、再利用可能なコードのチャンクをパッケージ化して参照する方法を提供します。「require」を使用すると、これらの機能のいくつかをすでに活用しています。つまり、dojoのチャンクにアクセスできます。同じ方法で、独自のコードを再利用可能なチャンクとして表示することができます。

これは非常に大きなトピックですが、これを読むことから始めることができます

于 2012-10-26T11:54:30.503 に答える
0

もう1つできることは、requireを関数内に移動することです。

そのような関数がたくさんある場合でも、繰り返すのは面倒ですが、何度も何度も要求することによる実行時のペナルティは基本的にありません。注意すべき唯一のことは、関数内のコードが非同期になることです。そのため、値を返す代わりに、コールバックまたはpromiseを使用する必要があります。

または、一部のイベントハンドラー内からのみこの関数を使用している場合(私は参照dojo/on)、この同じrequireブロックのスコープ内でそれらを設定できます。

于 2012-10-27T20:50:28.753 に答える