我们正在输出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是否会在线截断该值?
答案 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}