Пробовал это локально. И ударил вопрос:
debug: Emitting the event: extendTemplateData
→ [2014-02-14 01:38:50.030] [/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/out/lib/docpad.js:1184] [DocPad.emitSerial]
error: Something went wrong with the action
→ [2014-02-14 01:38:50.037] [/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/out/lib/interfaces/console.js:107] [ConsoleInterface.destroyWithError]
error: An error occured:
ReferenceError: getGigsData is not defined
at Object.docpadConfig.events.extendTemplateData (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/docpad.coffee:42:44)
at ambi (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/node_modules/ambi/out/lib/ambi.js:25:27)
at DocPad.<anonymous> (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/out/lib/docpad.js:995:25)
at ambi (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/node_modules/ambi/out/lib/ambi.js:23:18)
at Task.<anonymous> (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/node_modules/event-emitter-grouped/out/lib/event-emitter-grouped.js:45:23)
at ambi (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/node_modules/ambi/out/lib/ambi.js:23:18)
at fire (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/node_modules/taskgroup/out/lib/taskgroup.js:163:25)
at b (domain.js:183:18)
at Domain.run (domain.js:123:23)
at Task.fire (/Users/balupton/Projects/docpad-extras/skeletons/so-21747504/node_modules/docpad/node_modules/taskgroup/out/lib/taskgroup.js:173:25)
at processImmediate [as _immediateCallback] (timers.js:330:15)
, который указывает, что ошибка на самом деле внутри нашего обработчика событий, а не в коде. Это по какой-то причине getGigsData
не создаются, несмотря на наши:
getGigsData: ->
g = { "date" : "3-4-2013", "location" : "Gent" }
return g
Рассматривая код, как пользователь CoffeeScript, я нашел проблему. В качестве не CoffeeScript пользователя, вы можете использовать CoffeeScript компилятор на сайте CoffeeScript http://coffeescript.org увидеть скомпилированный JavaScript, который:
({
events: {
extendTemplateData: function(opts) {
({
getGigsData: function() {
var g;
g = {
"date": "3-4-2013",
"location": "Gent"
};
return g;
}
});
return opts.templateData["getGigsData"] = getGigsData;
}
}
});
Как мы можем видеть, что, безусловно, не то, что мы ожидали. Мы просто определяем getGigsData внутри объекта, а затем ничего не делаем с ним.
Проблема в том, что мы использовали двоеточие вместо знака равенства, поэтому getGigsData: ->
вместо getGigsData = ->
. Это не дело coffeescript, но вы столкнулись бы с той же проблемой, если бы это был javascript, хотя javascript может быть немного более очевидным из-за необходимых squiggly фигурных скобок вокруг определений объектов.
Как обойти, если вы предпочитаете использовать JavaScript с DocPad по любой причине, это полностью поддерживается. Для файла конфигурации docpad можно использовать файл docpad.json
или docpad.js
. Еще один вариант - продолжить использование CoffeeScript, а затем просто поместить код JavaScript в обратную сторону, см.: http://coffeescript.org/#embedded
Эта фиксированная ступень 1, но я все еще застрял на части мангуста [https://github.com/simonh1000/docpad- плагин-монго/блоб/ведущий/SRC/mongo.plugin.coffee] (код). Это находит, что команда console.dir выглядит хорошо, но я не уверен, как подключиться к docpad - в настоящее время вы видите вложенный набор команд 'return', но это не работает. Моя первая попытка передать 'opts' в getGigsData, похоже, не улучшила ситуацию. Я попытался следовать примеру кода, но безрезультатно –
Можете ли вы спросить об этом в качестве отдельного вопроса, и я с радостью последую за ним. – balupton
http://stackoverflow.com/questions/21772015/docpad-adding-to-templatedate-via-callback –