在把手中分配一个变量

时间:2017-07-21 15:07:44

标签: javascript handlebars.js bigcommerce

我正在研究大型商业的模板平台。此平台使用手柄语法。我需要能够根据我的网址中的一个参数设置一个值,更像是' window.location.pathname',我需要能够在整个网站上访问这个新变量。我能够使用常规JavaScript以两种不同的方式工作,但我不想在整个站点的每个地方重新创建我的脚本。所以基本上,我可以使用一些帮助将我的2个香草脚本中的一个放入把手进行格式化。我的工作原理如下所示:

<p id="BrandLogo"></p>
<script>
    var directory = window.location.pathname;
    var branding;
    var str = directory.includes("blackvue");
    if (str === false) {
        branding = value one;
    } else {
        branding = value 2
    }
    document.getElementById("BrandLogo").innerHTML = branding;
</script>

<p id="BrandLogo"></p>
<script>
    var directory = window.location.pathname;
    var branding;
    if (str == '/URL-I-Want-To-Focus-On/') {
        branding = value one;
    } else {
        branding = value 2
    }
    document.getElementById("BrandLogo").innerHTML = branding;
</script>

提前致谢

1 个答案:

答案 0 :(得分:5)

如果您尝试在把手内设置和使用局部变量,请尝试以下方法:

首先,创建一个辅助函数:

var handlebars = require('handlebars');
handlebars.registerHelper("setVar", function(varName, varValue, options) {
  options.data.root[varName] = varValue;
});

接下来,设置您的变量。

{{setVar "greeting" "Hello World!"}}
{{#if some-condition}}
    {{setVar "branding" "Value one"}}
{{else}}
    {{setVar "branding" "Value 2"}}
{{/if}}

最后,使用变量:

<div>
  <h1>{{greeting}}</h1>
</div>

document.getElementById("BrandLogo").innerHTML = {{branding}};