Я поддерживаю и расширяю старый проект, который был до AMD. Я хочу добавить диаграмму в приложение. для этого я создал файл JS следующим образом:Как определить модуль и использовать его в додзё с AMD?
define(["dojox/charting/Chart",...."dijit/Dialog","dojo/dom-construct"],
function (Chart) {
function showDailyChart(data){
//code to show the chart in a dialog
}
return customModules.singleChart;
});
Я сохранил этот файл как /customModules/singleChart.js
В Мой основной HTML-страницы, я добавил его в пакеты следующим образом:
var dojoConfig = { parseOnLoad: true,
packages: [....,{"name":"customModules",
"location":location.pathname.replace(/\/[^/]+$/, "")+"/modules" }
]};
Функция, из которой я хочу назвать ее, является до AMD. Поэтому я называю это следующим образом:
dojo.require("customModules.singleChart");
.
.
.
customModules.singleChart.showDailyChart(data);
Я могу видеть, что /customModules/singleChart.js
загружается в Firebug консоли, а также Tab Net. Однако нет объекта customModules.singleChart
. Как ни странно, ошибок нет. Я тестировал это в Firebug, а также в инструментах разработчика Google Chrome.
Каков правильный способ вызова модуля AMD с использованием dojo.require
? Или есть лучший способ сделать то, что мне нужно?
С помощью этого кода я могу получить объект 'customModules.singleChart', но на нем нет функции' showDailyChart'. –
Вы должны создать экземпляр виджета. В этом случае функция не является статической, это функция экземпляра. См. Мой обновленный ответ. – Philippe
Спасибо за xxplaining это так ясно! –