我正在使用NodeJS / Express3和dusts-linkedin,并希望做相同的事情:
for(var i = locals.first;i < (locals.first + locals.pages); $i++) {
<div>i</div>
}
我认为我需要创建一个辅助函数,但不清楚如何这样做
答案 0 :(得分:5)
确定。在我的情况下,我试图创建一个寻呼机,但我将简化一点,以便人们可以得到一般的想法。可能有更简洁的方法来做到这一点。
我的助手将被称为“寻呼机”。我在本地人中有一些我想传递的快速变量。这些是locals.start和locals.end - 每个都是一个代表我的寻呼机开始和结束的数字。我还会传递一个用于寻呼机的网址。
在我的模板中,我调用了帮助程序以及我可能需要的所有参数:
{@pager start="{locals.start}" end="{locals.end}" url="/articles?page=%page%"/}
然后在我的应用程序中,我将添加此帮助程序。我需要确保我的防尘模块存在:
cons = require('consolidate'),
dust = require('dustjs-linkedin'),
然后创建帮助器:
dust.helpers['pager'] = function(chunk, context, bodies, params) {
//tapping these to get the actual value (since we passed vsaraibles) and casting as a number with '+'
first = +dust.helpers.tap(params.first, chunk, context);
last = +dust.helpers.tap(params.last, chunk, context);
//this one is all ready since we just passed a string
url = params.url;
//build our html - do whatever you need here - this is an example
var html = '<ul>';
for(var i = first; i <= last; i++) {
//I used a replace and placeholder - prob other methods you can use
html += '<li><a href="' + url.replace('%page%', i) + '">' + i '</a></li>';
}
html += '</ul>';
//write this back to the template
chunk.write(html);
//return it
return chunk;
};
希望这有助于某人