我从KrakenJs环境中的DustJs开始,我在Dust助手方面遇到了一些麻烦。 事实上,我想创建一个帮助器,可以为我创建一个简单的引导按钮。
这是我的代码:
var dust = require('dustjs-linkedin');
if (!dust.helpers)
dust.helpers = {};
dust.helpers.bootstrapButton = function (chunk, context, bodies, params) {
var body = bodies.block || '',
options = params || {},
btnStyle = options.style || 'default',
btnClass = options.class || '',
btnSize = options.size || '';
btnStyle = 'btn btn-' + btnStyle;
if (btnSize)
btnSize = 'btn-' + btnSize;
return chunk.write('<button class="' + btnClass + btnStyle + btnSize + '">' + body + '</button>');
};
当我调用这个帮助器时,我有body的render函数而不是body的最终文本(按钮内容:&#34;函数body_3(chk,ctx){ctx = ctx.shiftBlocks(blocks);返回chk .WRITE(&#34;测试&#34);}&#34)
我尝试使用chunk.render,但我有一个错误,因为我的最终html不是像body这样的函数。
你有什么想法吗?
此致 纪尧姆
答案 0 :(得分:2)
正文是一个未经评估的块,您需要先评估它,然后才能将其与字符串连接起来。
var curChunk = chunk.data.join(); // Capture anything in chunk prior to this helper
chunk.data = []; // Empty current chunk
var body = bodies.block(chunk).data.join() || '', // Evaluate block and make a string of it
.......
return chunk.write(curChunk + '<button class="' + btnClass + btnStyle + btnSize + '">' + body + '</button>'); // Prefix output with any earlier chunk contents and then build your tag.