【问题标题】:Substring helper in handlebars车把中的子字符串助手
【发布时间】:2016-12-06 06:01:19
【问题描述】:

我可以在 Handlebars 中编写一个助手来判断一个字符串是否是另一个字符串的子字符串吗?

我写了以下代码,但它似乎不起作用

这是助手:

'if_sub': function(a, b, opts) {
     if (a.includes(b))
         return opts.fn(this);
     else
         return opts.inverse(this);
 }

这是实现:

{{#if_sub colvalues "success"}}
    <td class="log-success"> {{colvalues}} </td>
{{/if_sub}}

【问题讨论】:

  • colvalues 是什么?是字符串吗?
  • @Mahi 是的。它是一个包含字符串的变量。例如-“失败:txn1”。
  • 所以如果变量 colvalues succ 那么它应该返回 `opts.fn(this);` else opts.inverse(this); ??
  • @Mahi 是这样的。但我不知道我是否正确实施了这一点。你能指导一下它应该怎么做吗?
  • @Mahi 它抛出一个错误说“对象没有方法'包含'”

标签: javascript node.js handlebars.js substring helper


【解决方案1】:

只是小错误。 if (a.includes(b)) 应该是 if (b.includes(a))

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
  <title>How to render html with Handlebars.js</title>
  <script src="https://cdn.jsdelivr.net/handlebarsjs/4.0.3/handlebars.min.js"></script>
  <script src="http://code.jquery.com/jquery-latest.min.js"    type="text/javascript"></script>
 
  <script id="simple-template" type="text/x-handlebars-template">

      {{#if_sub colvalues "success"}}
    <td class="log-success">  {{colvalues}} </td>
      {{/if_sub}}
  </script>
  
  <script type="text/javascript">
        Handlebars.registerHelper("if_sub",function(a, b, opts) {

     if (b.includes(a)){
       return opts.fn(this);
     }
         
     else{
       return opts.inverse(this);
     }
         
 });
  
    //wait for page to load
    $(document).ready(function(){
      var raw_template = $('#simple-template').html();
      var template = Handlebars.compile(raw_template);
      var data = {colvalues:"suc"}; //change value and see.
      var html = template(data);
      $('#main').append(html);

    });
  </script>
</head>
  
<body>
<!-- Insertion point for handlebars template -->
<div id="main" style="margin-left:100px">
</div>
</body> 
</html>

【讨论】:

  • 我收到此错误。 "对象成功没有方法'包含'"
  • 那么我不知道你为什么会遇到问题......也许是{colvalues:"suc"}; 而不是"suc" 你给了对象。并且 Object 没有包含方法。数组确实
  • 好的,让我看看。谢谢你的时间。 :)
  • 找出错误。传递的 {{colvalue}} 是一个对象。将其转换为字符串并且它工作。非常感谢您的耐心:)
  • 很好,你是如何将对象转换为字符串的??
猜你喜欢
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
  • 2016-01-10
  • 2013-02-05
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
相关资源
最近更新 更多