把手 - 子串

use*_*810 14 javascript templates handlebars.js

我是Handlebars模板系统的新手,这是我与Handlebars合作的第一个项目.我创建了简单的模板:

<script id="article_list_template" type="text/x-handlebars-template">
    {{#each this}}
    <div class='article'>
    <a href='article.php?id={{id_news}}' data-article_id='{{id_news}}'>
        <h1>{{title}}</h1>
    </a>
        <p> {{{content}}} </p>
    <div style='clear: both;'> </div>
    </div>
    {{/each}}
</script>
Run Code Online (Sandbox Code Playgroud)

回来content很长.我希望它更短,例如150个字符.我试图使用JavaScript substring()方法如下:

<p> {{{content.substring(0,150)}}} </p>

但它显然没有用.你能给我一些如何解决这个问题的技巧吗?谢谢

编辑:好的,问题解决了:我已经在PHP中完成了,所以返回的内容现在有适当的长度:

foreach ($articles as $a) {
    $a->content = cut_text( $a->content, 30);
}
Run Code Online (Sandbox Code Playgroud)

小智 28

您将要在javascript中创建Handlebars帮助程序以执行子字符串代码:

Handlebars.registerHelper('trimString', function(passedString) {
    var theString = passedString.substring(0,150);
    return new Handlebars.SafeString(theString)
});
Run Code Online (Sandbox Code Playgroud)

然后,在您的模板中,您将其称为:

<p> {{{trimString content}}} </p>
Run Code Online (Sandbox Code Playgroud)

  • 您也可以将"150"作为助手的参数. (4认同)

Nai*_*tik 22

我使用值作为选项,起始值以及作为参数形式模板传递的结束值.试试这个:

Handlebars.registerHelper('trimString', function(passedString, startstring, endstring) {
   var theString = passedString.substring( startstring, endstring );
   return new Handlebars.SafeString(theString)
});
Run Code Online (Sandbox Code Playgroud)

在模板中:

<p>{{{trimString value 0 300}}}</p>
Run Code Online (Sandbox Code Playgroud)

它将打印该值的前300个字符.希望这对你有所帮助.