JavaScript Handlebars 截断字符的 helpers

kevinhua · 2013年04月20日 · 最后由 kevinhua 回复于 2013年04月20日 · 2440 次阅读

Handlebars 截断字符的 helpers,使用时如下:

{{trimString name 10}}

就可以将 name 截成长度为 10 的字符,支持中英文字符。

Handlebars.registerHelper('trimString', function(passedString,len) {
  if(!passedString) { return ''; }
  if(!len) {return new Handlebars.SafeString(passedString); }
  var theString = passedString + "";
  var a = 0;
  var i = 0;
  var temp = '';
  for (i=0;i<theString.length;i++) {
    if (theString.charCodeAt(i)>255) {
      a+=2;
    }
    else {
      a++;
    }
    if(a > len) { return new Handlebars.SafeString(temp+"..."); }
    temp += theString.charAt(i);     
  }
  return new Handlebars.SafeString(theString); 
});

不用 css 搞?

text-overflow: ellipsis;

跨浏览器 ellipsis: http://compass-style.org/reference/compass/typography/text/ellipsis/

#1 楼 @luikore yes. css is the right way!

不过这个 helper 还是有用的,有时真的是需要固定字符串长度而不是刚好装得进一个框...

#3 楼 @luikore css 实现不错。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号