2013-10-08 1 views
2

Для коллекций я хотел бы использовать помощник, определенные в docpad.coffee, такие какКак настроить функции помощника docpad.coffee для генерации коллекции?

getLang: (inLang) -> 
    "/" + inLang + "/" 
... 
myCollection: -> 
     @getCollection("html").findAllLive().on "add", (model) -> 
      model.setMeta({ url: @getLang("en") + defaultUrlPartGoesHere }) 

, но не могу получить FilesCollection знать мой помощник:/

Как установить вспомогательные функции становятся доступными для определения коллекции?

ответ

3

Ссылка, относящаяся к docpadConfig.templatedata.getLang(), будет работать, но если вы обнаружите, что это неприятно, помните, что docpad.coffee является стандартным модулем NodeJS (написанным в coffeescript). Вы также можете определить свою функцию вне объектного объекта docpadConfig, а затем как вставить его в свой шаблонData (при условии, что он вам нужен для шаблонов), и использовать его при создании вашей коллекции.

Например:

# define the function outside of the config object 
getLang: (inLang) -> 
    "/" + inLang + "/" 

docpadConfig = { 
    templateData: 
     getLang: getLang # reference the previously defined function 

    collections: 
     myCollection: -> 
      # use the previously defined function 
      @getCollection("html").findAllLive().on "add", (model) -> 
       model.setMeta({ url: getLang("en") + defaultUrlPartGoesHere }) 
} 
0

Mh, а не (самый) элегантный способ пойти, но используя абсолютный путь в docpad.coffee Я могу ссылаться на него, например. docpadConfig.templateData.getLang(...) если определено в пределах templateData.