DustJs - 助手渲染

时间:2014-03-09 16:53:59

标签: dust.js kraken.js

我从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这样的函数。

你有什么想法吗?

此致 纪尧姆

1 个答案:

答案 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.