1

我们正在输出到 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 会截断在线值?

4

1 回答 1

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}
于 2013-08-24T02:05:24.630 回答