尝试使用handlebars-express将字符串变量传递给html内的javascript作用域

时间:2019-08-09 19:22:31

标签: javascript html express express-handlebars

不幸的是,我愿意使用handlebars-express将变量从服务器端传递到客户端。

在这里浏览内容一段时间后,我可能需要协助来整理内容。

检查传递的对象是否为字符串类型:是。 尝试了几次检索数据的组合,但均未成功。

下面的getDeviceID方法可以按预期工作-检查以确认它返回了所需的字符串。

authMe.js(路由器):

if (userInSystem) {
        var userDeviceID = await helpers.getDeviceID(usersSheetID, scope, Username);  
        res.render("signinSuccessful", { dID: userDeviceID });
 }

signinSuccessful.html:

<body>
    <script>
        var dID = '{{dID}}'; ///// -> 
        console.log(dID); //////// -> need elp with these two lines 
    </script>
    <div class="container-login100"></div>
    <script>signinSuccess()</script>
</body>

在app.js中,我具有以下要求:

var exphbs  = require('express-handlebars');
app.engine('handlebars', exphbs());
app.set('view engine', 'handlebars');

即使我感觉这是处理发送的字符串变量的方法,它始终会打印'{{dID}}'。

谢谢!

1 个答案:

答案 0 :(得分:0)

我也遇到了这样的问题,我不得不将数据库中的值传递到我的handlebars文件中的客户端脚本中,但这没有用。我所做的是将我希望在客户端脚本中保存的值保存在某些div的data- *属性中,如果您愿意,也可以隐藏该值

<div style="display:none;" data-value="{{dID}}" id="value"></div>

比起您,您可以使用javascript或jquery从脚本中检索该值 使用Javascript:

var dID = document.querySelector('#value').getAttribute('data-value');

使用JQuery:

var dID = $('#value').attr('data-value');

您可以从此链接了解有关data- *属性的更多信息 https://www.w3schools.com/tags/att_global_data.asp