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”获取值,而不是之前的值,这一点很重要。我对示例进行了一些编辑。也许现在很清楚我在寻找什么样的解决方案。