用变量连接字符串

时间:2018-01-30 04:29:22

标签: handlebars.js

在我的Handlebar tmp.hbs模板中,我使用自定义注册的a帮助器

<p>{{a "this is a message by the author"}}</p>

返回

 <p>THIS is A message BY the AUTHOR</p>

现在我需要让消息动态化。基本上,我需要在最后添加{{name}}变量的值,以便输出(带name: 'pippo'

<p>THIS is A message BY pippo</p>

是否有办法将字符串与变量连接起来作为帮助者的单个参数?

3 个答案:

答案 0 :(得分:0)

一种方法是使用连接帮助器。当你将参数传递给帮助者a时,你可以通过将它们包含在b中来调用另一个助手(),如:

{{a (b arg1 arg2)}}

var source = $("#template").html(); 
var template = Handlebars.compile(source); 

var data = {
  "authors": [
    { "name": "Pippo", "message": "lorem ipsum dolor sit amet" },
    { "name": "Adam", "message": "amet sit dolor ipsum lorem" }
  ]
};

Handlebars.registerHelper('a', function(message, options) {

  return message;

});

Handlebars.registerHelper('concat', function () {

    var result = "";

    for(var i in arguments) {
        result += (typeof arguments[i] === "string" ? arguments[i] : "") + " ";
    }
 
    return result;

});

$('body').append(template(data));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.11/handlebars.min.js"></script>
<script id="template" type="text/x-handlebars-template">

{{#each authors}}
<p>{{a (concat this.message this.name)}}</p>
{{/each}}


</script>

答案 1 :(得分:0)

尝试这种方式。 "yourstring{{variable}}"

"/book/borrow/{{_id}}"

答案 2 :(得分:-1)

在我的情况下: <iframe src="http://{{model.value}}"></iframe> 如果'http://'是字符串,而'{{model.value}}'是变量