2016-05-26 4 views
1

私は、ユーザーの選択に応じてDojoクラスを要求する必要があるクラスを100s持っています。それを煮詰めるには、ユーザーが選択した文字列値に基づいてDojoクラスを要求する必要があります。例えば可変値からのAMDスタイルのクラスが必要ですか?

ユーザーがトラックアイコンを選択した場合、私はトラックを取得し、私はトラックという名前のクラスを持っています。

同期ローダスタイルは

var userSelection = "Truck"; 
var myVeh = require("Vehicles/"+userSelection); 
var veh = new myVeh('Truck 4', 15000); 
veh.honk(); 

道場良い習慣のようにそれを読み込むことができますが、それを利用する前にロードされていることを確認するクラスを作るためにAMDローダーを使用することをお勧めします。

require([ 
     "Vehicles/Truck", 
     "dojo/domReady!" 
     ], function(
     Truck 
    ) { ...... }); 

私は、コールバックで使用する変数の値からAMDスタイルのクラスを必要とすることができますどのようにAMDのスタイルの読み込みに固執したいが

最初のAMD以外の方法でロードするとどうなりますか?長所と短所は何ですか?*

私は試しました Use dynamic variable names in JavaScriptDynamic variables names in javascriptです。彼らはすべてウィンドウと[]メソッドを提案しますが、誰も私のために働いていませんでした。

私はモジュールがロードされた後にコールバックは引数あなたの道場として渡して実行され、あなたがrequireを使用して()次の例のモジュールTruck.jsであなたの道場クラスを必要とすることができ道場1.10.4

答えて

2

01)を使用していますクラス。

以下は、requireとコールバック関数を示す例です。あなたが使用してロードするモジュールより動的に指定することができ

require('Vehicles/Truck', function(Truck){ 
    var myTruck= new Truck('Truck 4', 15000); 
}); 

:あなたの質問にmentionatedよう

var userSelection = 'Truck'; 
require('Vehicles/' + userSelection, function(Truck){ 
    var myTruck= new Truck('Truck 4', 15000); 
}); 

02)あなたTruck.jsを想定は、AMDモジュール、両方のあなたのアプローチ(で)実際にAMDロードを使用しています。

あなたはここにrequire詳細を読むことができます:明確化のため https://dojotoolkit.org/reference-guide/1.10/dojo/require.html

+0

感謝を。 –

+0

@omega_cancerあなたは大歓迎です:) – GibboK

関連する問題