如何在dust.js中实现自定义渲染逻辑?

时间:2012-06-14 17:03:26

标签: javascript dust.js

我正在使用dust.js来呈现有时长且包含下划线的变量名列表:

SUM_COUNT_LABOR_COUNTRIES_SMS_PAST

浏览器不会对下划线进行换行,因此它可能会变得难看。我希望我的灰尘模板在每个下划线后添加零宽度空间,以便浏览器可以包装它。这肯定属于模板层而不是模型,但我无法弄清楚如何使用dust.js正确实现这一点,而且它是将表示与逻辑分离的非常好的原则。

我是否创建了“助手”功能?我在哪里放置辅助功能? 如何从模板中调用它?

1 个答案:

答案 0 :(得分:10)

尘埃有很多方法可以解决这个问题。我认为你正在寻找的可能是定义一个灰尘过滤器。你可以扩展dust.filters来添加你自己的过滤器。 dust.filters在源代码中看起来像这样:

dust.filters = {
  h: function(value) { return dust.escapeHtml(value); },
  j: function(value) { return dust.escapeJs(value); },
  u: encodeURI,
  uc: encodeURIComponent,
  js: function(value) { if (!JSON) { return value; } return JSON.stringify(value); },
  jp: function(value) { if (!JSON) { return value; } return JSON.parse(value); }
};

所以你要做的就是为它添加另一个过滤变量的键值。例如如果你使用下划线:

_.extend(dust.filters, {zws: function(value){ your code here}})

然后你可以在你的灰尘模板中调用它:

the variable is: {variable|zws}
希望这会有所帮助。