3

我有一个模糊文本的javascript函数:

function blurlines(data) {
    var dataSplit = data.split(" ");
    var lastWord = dataSplit.pop();
    var toBlur = '<span class="blur">' + dataSplit.join(" ") +  '</span>'; 
// Blur entire sentace, show only last word
     var output = '<li>' + toBlur + lastWord + '</li>';
     return output;
}

我试图通过尝试以下方法来使其与dust.js一起使用:

{#storylines}
    <script>
        blurlines("{text}");
    </script>                   
{/storylines}

有没有办法通过 JS 函数轻松传递 {text} 值,然后渲染输出?

如果我在控制台中运行它似乎可以工作:

> blurlines("This is a test line")

> "<li><span class="blur">This is a test</span>line</li>"

4

2 回答 2

3

我做了类似的事情,在我的全局上下文中创建一个辅助函数:

var dustCtx = dust.makeBase({
    blurText: function(chunk, context, bodies, params) { 
        var dataSplit = params.data.split(" ");
        var lastWord = dataSplit.pop();
        var toBlur = '<span class="blur">' + dataSplit.join(" ") +  '</span>'; 
        var output = '<li>' + toBlur + lastWord + '</li>';
        return chunk.write(output);
    }
});

在渲染时将其与本地上下文合并:

dust.render("template", dustCtx.push({storylines:...}), function(err, out) {});

然后这样称呼它:

{#storylines}
    {#blurText data=text/}
{/storylines}

例如,如果您想控制模糊,这种方法对于传递其他参数可能很方便。

于 2012-11-04T23:04:38.400 回答
2

我创建了一个dust.js 过滤器来让它工作

  bl: function(value){  var dataSplit = value.split(" ");
    var lastWord = dataSplit.pop();
    var toBlur = '<span class="blur">' + dataSplit.join(" ") +  '</span>'; 
     var output = toBlur + lastWord;
     return output; }

并在模板中传递以下内容:

{#storylines}
    <li>{text|bl|s}</li>    
{/storylines}
于 2012-11-04T21:03:48.103 回答