0

首先,很抱歉问一个以前以类似方式问过的问题。我只是无法获得任何适合我的解决方案。

我正在使用 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>

部分“吹嘘”:

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

我无法在我的哈希变量中获取值 var1 来呈现。如果我将硬编码字符串传递给部分,那么它可以正常工作,但我似乎永远无法访问我称之为“页面上下文”的内容。

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

我努力了...

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

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

  • 将键值对发送到部分

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

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

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

4

1 回答 1

1

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

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 节点服务器中编译。

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

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

于 2018-02-08T22:10:39.907 回答