在Dust.js模板中截断返回的数据

时间:2013-08-23 13:24:02

标签: jquery truncate dust.js

我们正在输出Dust.js模板,如下所示:

{#Data}
<li class="link-block clearfix">
    <img class="profile-image" src="{ImagePath}"/>
    <div class="left">
        <a href="{UrlPath}">
            <span class="left">
                <span class="details">{ByLineStart}{ByLineAction}{ByLineEnd}</span>
                <p>{Detail}</p>
            </span>
            <span class="left info">
                <span class="last-reply">{Last}</span>
                <span class="count-small">{ChildCount}</span>
            </span>
        </a>
    </div>
</li>
{/Data}

我们希望在这种情况下将“详细信息”输出截断为XXX个字符。与RSS提要一样,整个块是一个可点击区域,将用户带入应用程序的另一部分。有没有人知道现有的Dust Logic是否会在线截断该值?

1 个答案:

答案 0 :(得分:7)

我不知道。但您可以尝试以下

创建自定义助手

var dust = require("dustjs-linkedin");
require("dustjs-helpers");
dust.helpers.Truncate = function(chunk, context, bodies, params) {
    var data   = dust.helpers.tap(params.data, chunk, context),
        length = dust.helpers.tap(params.length, chunk, context);
    return chunk.write(data.substr(0, length));
}

模板

{@Truncate data="{Detail}" length="15"/}

如果您在问题中指定的值XXX是常量值,则可以创建这样的自定义过滤器。在此示例中,XXX被视为5。

var dust = require("dustjs-linkedin");
dust.filters.t = function(value){
    return value.substr(0, 5);
};

模板

{Detail|t}