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

Jer*_*emy 1 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}
Run Code Online (Sandbox Code Playgroud)

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

the*_*eye 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));
}
Run Code Online (Sandbox Code Playgroud)

模板

{@Truncate data="{Detail}" length="15"/}
Run Code Online (Sandbox Code Playgroud)

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

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

模板

{Detail|t}
Run Code Online (Sandbox Code Playgroud)