如何将html附加到dust.js中的部分?

时间:2013-11-08 11:41:02

标签: javascript node.js dust.js

如何将html附加到dust.js中的某个部分?似乎没有内置的方法来做到这一点。也许某种流媒体块可以用来实现这一目标?另一个解决方案可能是一个dustjs-helper,它可以找到一个部分并附加到其中。

在将其他模板包含到父模板中时,我需要此功能在html文档的头部添加脚本和样式。

任何想法如何解决这个问题?我还接受使用实体或块而不是部分的解决方案。

1 个答案:

答案 0 :(得分:1)

如果我理解你的话,你需要一些可以用来将动态内容注入的块! 你确实可以写一个帮手来做到这一点。

假设您有一个模板并定义了一个自定义助手

{@append someParam="someValue"/}

然后你写了助手(描述here

(function () {
    'use strict';

    // load dust if not already there
    dust = require('dustjs-linkedin');

    // load helpers if not already done
    require('dustjs-helpers')

    // create our custom helper 
    // (note that 'append' is the name of the helper, as used in the template)
    dust.helpers.append = function (chunk, context, bodies, params) {
        // create a new chunk and map it to make it async
        // you could also do `return chunk.write('somehtml')` if you use it sync
        return chunk.map(function (chunk) {
            chunk.end('<div>' + params.someParam + '</div>');
        });
    };
}();

如果您需要像

这样的块
{@append}
    some string
{/append}

您需要稍微修改一下帮助(感谢odd.ness.io):

if (bodies.block) {
    return chunk.capture(bodies.block, context, function(string, chunk) {
        chunk.end('This is ' + string + ' we wrapped!');
    });
}
// If there's no block, just return the chunk
return chunk;

哪个应该给你:&#39;这是我们包裹的一些字符串!&#39;

注意:未经测试,只写了^^

希望这有助于欢呼。