从变量值要求AMD风格的类?

时间:2016-05-26 06:26:21

标签: javascript dojo

我有100个类,我必须根据用户选择要求Dojo类。为了简化它,我必须根据用户选择的字符串值要求一个Dojo类。

例如,如果用户选择卡车图标,我会卡车,并且我有一个名为卡车的课程。

同步加载器样式可以像

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

Dojo良好实践建议使用AMD加载程序以确保在使用之前加载类。

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

我想坚持AMD风格加载,但

如何从变量值中要求AMD样式的类用于回调?

如果我加载第一个非AMD方法怎么办?什么是利弊?*

我试过了 Use dynamic variable names in JavaScriptDynamic variables names in javascript。他们都建议窗口和[]方法,但没有一个对我有效。

我正在使用Dojo 1.10.4

1 个答案:

答案 0 :(得分:2)

01)你可以使用require来使用你的dojo类(在下面的示例模块Truck.js中),在加载模块后,执行回调作为参数传递你的dojo类。

下面演示require和回调函数的示例。

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

您可以使用以下命令动态指定要加载的模块:

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

02)假设您的Truck.js是AMD模块,您的方法(正如您的问题中提到的)实际上都在使用AMD加载。

您可以在此处详细了解requirehttps://dojotoolkit.org/reference-guide/1.10/dojo/require.html