Javascript 从Handlebar helper中的模板获取值
我使用我的模板把手。是否有方法使用正在使用帮助器的模板中的值 重要的是,给定的值是一个字符串,以后是值 例如:Javascript 从Handlebar helper中的模板获取值,javascript,handlebars.js,Javascript,Handlebars.js,我使用我的模板把手。是否有方法使用正在使用帮助器的模板中的值 重要的是,给定的值是一个字符串,以后是值 例如: // 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
// 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
});
//Template.html
{{myHelper'这是一个非常好的{name}}
Helper.js
Handlebar.registerHelper('myHelper',函数(字符串){
//字符串是“这是一个awsome{name}”,重要的是,{name}是一个字符串,在这一点上不是真正的值
var myNewString=string.replace(\{name}\,handlebar.getValueByKey(name));
返回myNewString
});
如果name是“Test”,则返回的值将是这是一个非常糟糕的测试
name的值在该模板的另一个帮助器中给出,其中“name”定义为字符串形式的“Test”
我正在寻找一个类似于我在示例中使用的函数-getValueByKey
有没有一种典型的方法可以做到这一点?我在官方文档中没有找到类似的内容
编辑:很抱歉-我不知道为什么代码框中的示例看起来像这样 通常,您只需设置一个通用帮助器,它将返回您需要的任何值。但是,您需要在助手中传递所需的值。如果需要多个值,只需按名称传入额外的值。比如说
<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);
});
我的名字是{{name}
我的电话号码是{{phonenumber}
我的地址是{{Address}
这三个的长度都是{{stringLength name phonenumber address}
把手。注册表帮助器('stringLength',函数(名称、电话号码、地址){
var retVal=姓名+电话号码+地址;
返回新的把手。安全字符串(返回长度);
});
你很接近了。关键在于将您想要的内容准确地传递给模板:
// 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
});
//Template.html
{{myHelper'这是一个很棒的'名字}
Helper.js
Handlebars.registerHelper('myHelper',函数(字符串,名称){
//字符串是“这是一个很棒的”
//{name}的值作为另一个值传递
//如果你想用{name}做其他事情,你可以
//在下面的函数中执行此操作
var myNewString=字符串+名称;
返回myNewString
});
希望这更接近您所寻找的内容。为什么选择getValueByKey?您是否只想返回传入值的长度?这只是一个示例-我的real Handlebar helper不返回字符串的长度,但需要在模板中获取返回字符串的值。我的示例不正确-对此表示抱歉。给我一个字符串是很重要的。一个更好的例子是:{{myHelper'我的名字是{name}}}我的助手获取字符串“My name is{name}”,然后从助手中的“name”获取值,而不是之前的值,这一点很重要。我对示例进行了一些编辑。也许现在很清楚我在寻找什么样的解决方案。