我正在使用Handlebars作为我的模板。有没有办法使用帮助程序正在使用的模板中的值?
重要的是给定值是一个字符串,后来是值。
示例:
// Template.html
<p>{{myHelper 'This is an awsome {name}'}}</p>
Helper.js
Handlebars.registerHelper('myHelper', function(string){
// string is 'This is an awsome {name}' AND it is important that {name} is a string and at this point not the real value
var myNewString = string.replace(\{name}\, Handlebars.getValueByKey(name));
return myNewString
});
如果名称是&#34;测试&#34;返回的值将是这是一个很棒的测试
name的值在此模板的另一个Helper中给出,其中定义了&#34; name&#34;是&#34;测试&#34;作为一个字符串。
我正在寻找像我在我的例子中使用的功能 - getValueByKey
有一种典型的方法吗?我在官方文档中没有找到这样的东西。
编辑:对不起 - 我不知道为什么代码框中的示例看起来像这样。
答案 0 :(得分:2)
你很亲密。关键是准确传递你想要的模板:
// Template.html
<p>{{myHelper 'This is an awesome' name}}</p>
Helper.js
Handlebars.registerHelper('myHelper', function(string, name){
// string is 'This is an awesome'
// value of {name} is passed as another value
// If you wanted to do other things with the {name} you could
// do that in the function below
var myNewString = string + name;
return myNewString
});
希望更接近你想要的东西。
答案 1 :(得分:1)
通常,您只需设置一个通用助手,它将返回您需要的任何值。但是你需要在帮助器中传入你想要的值。如果您需要多个,只需按名称传递额外值即可。例如
<p>My name is {{name}}</p>
<p>My Phone number is {{phonenumber}}</p>
<p>My Address is {{address}}</p>
<p>The length of all three are {{stringLength name phonenumber address}}</p>
Handlebars.registerHelper('stringLength', function(name, phonenumber, address) {
var retVal = name + phonenumber + address;
return new Handlebars.SafeString(retVal.length);
});