车把 - 调用部分时连接字符串参数

Handlebars - Concat string parameters when calling partial

本文关键字:字符串 参数 连接 分时 调用部 车把      更新时间:2023-09-26

我想知道在使用 Handlebars 加载部分时是否可以将变量与另一个字符串连接起来。

{{partial logos this ns=../ns nsr=../nsr id=id+"something"}}

我想连接id+"something"并将其存储到 id 中,这将发送到模板。

我正在使用自定义助手来加载零件(partial(,这些零件将this与车把提供的options.hash合并。

这是一个更简单的方法。名为"concat"的帮助程序:

module.exports = function(){
  var arg = Array.prototype.slice.call(arguments,0);
  arg.pop();
  return arg.join('');
};

用作:

{{>myPartial id=(concat "foo" myVar myOtherVar)}}

其实是有办法的。我已经尝试使用默认的部分加载器">",但我希望它也应该与"部分"一起使用。

你可以写一个这样的帮助程序

Handlebars.registerHelper( 'concat', function(path) {
    return "/etc/path" + path;
});

并像这样称呼它

{{> responsive-image src=(concat '/img/item-tire.png') alt="logo" }}

我希望这有所帮助。

您可以像这样做一个稍微可重用的解决方案:

module.exports = function (json) {
  var concat = '';
  var flipArray = [];
  for(var key in json.hash){
    flipArray.push(json.hash[key]);
  }
  for(var i = (flipArray.length - 1); i >= 0; i--){
    concat += flipArray[i];
  }
  return concat;
};

然后这样称呼它:

{{> icon name=(concat a="file-" b="pdf")}} // passes file-pdf to the partial under the hash value name

{{concat a="icon-" b="pdf" c="-Asdfasd" d="zxcvzxcvzxcvxz"}} // outputs icon-pdf-Asdfasdzxcvzxcvzxcvxz

帮助程序中向后循环的原因是,车把当前按声明顺序从最后一个到第一个列出它的哈希参数。

尝试关注。链接助手是我自己的帮助程序,用于添加上下文路径/us

Handlebars.registerHelper('link', function(option,parameter) {
            return '/us' + option.hash.target;
        });
Handlebars.registerHelper('concat', function() {
            var outStr = '';
            for(var arg in arguments){
                if(typeof arguments[arg]!='object'){
                    outStr += arguments[arg];
                }
            }
            return outStr;
        });

那我就这样打了电话。我的网址小狗

{{link target=(concat '/' url)}}

然后最后我得到了这样的输出/我们/小狗

不,这是不可能的。在帮助程序中使用串联。

{{partial logos this ns=../ns nsr=../nsr idKey=id idValue="something"}}

在 ES6 中,可以使用以下帮助程序: concat : (...strs) => strs.join('')

您可能还想跳过车把给出的参数,即: concat : (...strs) => strs.filter( arg => typeof arg !== 'object' ).join('')

如果您正在执行简单的a + b串联,并且已经包含车把助手,则可以使用 add 助手:

{{> myPartial myVariable=(add someVariable "some string") }}