javascript - 访问handlebars.js/express-handlebars部分中的javascript变量

标签 javascript node.js handlebars.js partials express-handlebars

首先,很抱歉提出一个以前以类似方式提出的问题。我就是找不到任何适合我的解决方案。

我将handlebars.js与node.js中的express-handlebars库一起使用。我已正确设置服务器和客户端渲染,并且可以毫无问题地使用通过路由器传入的数据渲染部分内容。

但是,我正在努力访问页面上下文并呈现页面脚本中声明的 JavaScript 数据。

页面片段:

 <script type="application/javascript">var hash = {
        var1:'this is the data I want to render', 
        var2: 'this is some more data i want to render'}</script>

            <div id="thisdiv">
                {{> blag this.hash}}
            </div>

部分“blag”:

<div class="blag-partial">
    {{this.var1}}
    {{this.var1}}
</div>

我无法获取哈希变量中的值 var1 进行渲染。 如果我将硬编码字符串传递给部分,那么它可以正常工作,但我似乎永远无法访问我所说的“页面上下文”。

我做错了什么,我似乎永远无法让它发挥作用?

我已经尝试过了...

  • 将“this”作为上下文传递到部分

  • 使用“../variablename”语法将其传递到部分

  • 将键值对发送到部分

  • 在部分调用和部分本身内部使用 @ 符号从上下文访问变量

...以及这些东西的许多其他组合。尝试 100% 失败,除非我传入硬编码字符串。

任何帮助将不胜感激。我觉得这应该很简单。

最佳答案

好的,为了解决这个问题,我需要更改 JavaScript,以实际分级对我想要输出的 div 的引用,然后注入(inject),然后使用我想要作为参数传递给模板的数据调用模板

var hash1 = {
    var1:'this is the data I want to render',
    var2: 'this is some more data i want to render'};
document.querySelector('#thisdiv').innerHTML = blagTemplate(hash1);

我将部分定义更改为:

<div class="blag-partial">
    {{#with this}}
        {{var1}}
        {{var2}}
    {{/with}}
</div>

我的第二个错误是我认为可以将此脚本内联到页面的脚本标记内,但它根本不起作用。

我认为我最大的错误是认为“express-handlebars”npm 模块实际上为我做的事情比它实际做的要多。 实际上......它会自动编译我指定的任何目录中的模板和部分内容,仅此而已。

所以当我查看像 https://www.youtube.com/watch?v=4HuAnM6b2d8 这样的教程时例如,我实际上仍然需要执行相同的过程...我可以跳过编译过程,因为模板/部分已经在我的 Express Node 服务器中编译。

现在我意识到没关系,我只是误解了我应该期待的事情。 如果有人有任何相反的知识,请随时分享。

我希望这可以帮助至少 1 个人,因为它让我沮丧了几个小时! :)

关于javascript - 访问handlebars.js/express-handlebars部分中的javascript变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48694911/

相关文章:

javascript - 在悬停方法上添加已删除的属性

javascript - 使用 Express 在 node.js 中模拟阻塞函数

javascript - 什么是 fs 以及如何安装它?

javascript - Handlebars 计数器#each

javascript - 语法错误: illegal character &#39; Passing a 2D List to JavaScript

javascript - 使用 django 框架或 javascript/AJAX 删除对象

handlebars.js - else if 的 Handlebars js 自定义助手

handlebars.js - 在 Rails Asset Pipeline 中使用带有 Marionette 的外部 Handlebars 模板

javascript - JS Date() 返回正确的时区但错误的日期

javascript - 创建了一个哈希,当使用长度函数时,它返回未定义