我有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 JavaScript和Dynamic variables names in javascript。他们都建议窗口和[]方法,但没有一个对我有效。
我正在使用Dojo 1.10.4
答案 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
加载。
您可以在此处详细了解require
:
https://dojotoolkit.org/reference-guide/1.10/dojo/require.html