2

对于集合,我想使用 docpad.coffee 中定义的助手,例如

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

但无法让 FilesCollection 知道我的助手:/

如何设置辅助函数以可用于集合定义?

4

2 回答 2

3

引用docpadConfig.templatedata.getLang()会起作用,但如果你觉得这很反感,请记住 docpad.coffee 只是一个标准的 NodeJS 模块(用 coffeescript 编写)。您还可以在 docpadConfig 文字对象之外定义您的函数,然后将其拉入您的 templateData(假设您需要它用于模板)并在构建集合时使用它。

例如:

# 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 })  
}
于 2013-10-10T14:07:14.413 回答
0

嗯,不是(最)优雅的方式,但使用 docpad.coffee 中的绝对路径我可以引用它,例如docpadConfig.templateData.getLang(...),如果在 templateData 中定义。

于 2013-10-08T12:29:13.497 回答