车把定制助手卡在“不匹配”

时间:2015-08-28 10:17:45

标签: javascript handlebars.js

我想通过使用把手使某些元素小写(我知道它可以用CSS,但你不能为类名做这些)。无论如何,我收到了这个错误:

Uncaught Error: toLowerCase doesn't match each

我的代码:

    <script id="icon-template" type="text/x-handlebars-template">
        {{#each results}}
        <li>
            <div class="content">
                    <i class="Icon icon-{{#toLowerCase contentType}}"></i>
            </div>
       </li>
       {{/each}}
    </script>

自定义助手:

<script type="text/javascript">
Handlebars.registerHelper("toLowerCase", function(input) {
    var output = input.toLowerCase();
    return output.replace(" ", "");
});
</script>

我做错了什么?

3 个答案:

答案 0 :(得分:14)

我明白了。对于任何有同样问题的人:

<script type="text/javascript">
handlebars.registerHelper("toLowerCase", function(input) {
    var output = input.toLowerCase();
    return output.replace(" ", "");
});
</script>

把手首先必须有一个小写字母(如:handlebars)使用自定义帮助程序时不需要#标签。因此,自定义助手现在是toLowerCase而不是#toLowerCase

<script id="icon-template" type="text/x-handlebars-template">
    {{#each results}}
    <li>
        <div class="content">
                <i class="Icon icon-{{toLowerCase contentType}}"></i>
        </div>
   </li>
   {{/each}}
</script>

答案 1 :(得分:14)

如果把手助手名称全部为小写:

<script type="text/javascript">
handlebars.registerHelper("lower", function(input) {
    var output = input.toLowerCase();
    return output.replace(" ", "");
});
</script>

调用它时需要使用哈希:

<script id="icon-template" type="text/x-handlebars-template">
   <i class="Icon icon-{{#lower contentType}}"></i>
</script>

如果帮助程序使用CamelCase名称:

<script type="text/javascript">
handlebars.registerHelper("toLowerCase", function(input) {
    var output = input.toLowerCase();
    return output.replace(" ", "");
});
</script>

然后你不使用哈希:

<script id="icon-template" type="text/x-handlebars-template">
   <i class="Icon icon-{{toLowerCase contentType}}"></i>
</script>

答案 2 :(得分:0)

如何调用帮助程序很重要。如果您使用哈希(#),则将其视为Block Helper,需要将其关闭。否则,您将收到该解析错误。

{{#toLowerCase}}Some UPPERCASE text{{/toLowerCase}}

显然,帮助程序代码的作用也很重要。上面的语法正确,但是代码可能无法达到预期的效果。