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 に答える