如何使用(或不使用)jQuery 加载外部文件句柄表达式?
How to load external file handlebars expressions with (or without) jQuery?
在我的主页中,我使用 jQuery.load():
从外部文件加载 header
<header>
<script>
$("header:first-of-type").load("./pages/common/header.handlebars");
</script>
</header>
页面加载正常,但 Handlebars {{}} 表达式被视为文本:
{{#if auth}}
<script>
// change style values of elements inside external file (nav bar "register" link) to hidden
</script>
{{/if}}
无论 auth 的值如何,if 语句中的代码都会运行,页面将在我输入它的地方显示 {{#if auth}} {{/if}}。
如果我移动页面 header 中的所有代码(而不是通过 jQuery 加载它),它就可以工作。
我应该怎么做才能让 .load() 识别表达式而不是像对待文本一样对待它?
我也试过在主页中移动 if 语句,但是由于元素尚未定义,脚本将无法运行,因为此时 header 尚未加载。
谢谢!
我通过将我的页眉和页脚声明为 Handlebars partials 并将它们原样加载到视图中而不是使用 jQuery 来解决这个问题。
在我的 index.js 我添加了:
const handlebars = require('handlebars')
handlebars.registerPartial(
'headerAuth',
fs.readFileSync(__dirname + "\views\partials\header-auth.handlebars", 'utf8')
)
handlebars.registerPartial(
'header',
fs.readFileSync(__dirname + "\views\partials\header.handlebars", 'utf8')
)
handlebars.registerPartial(
'footer',
fs.readFileSync(__dirname + "\views\partials\footer.handlebars", 'utf8')
)
然后,在页面内部,调用 header/footer 和
<header>
{{> header}}
</header>
在我的主页中,我使用 jQuery.load():
从外部文件加载 header<header>
<script>
$("header:first-of-type").load("./pages/common/header.handlebars");
</script>
</header>
页面加载正常,但 Handlebars {{}} 表达式被视为文本:
{{#if auth}}
<script>
// change style values of elements inside external file (nav bar "register" link) to hidden
</script>
{{/if}}
无论 auth 的值如何,if 语句中的代码都会运行,页面将在我输入它的地方显示 {{#if auth}} {{/if}}。
如果我移动页面 header 中的所有代码(而不是通过 jQuery 加载它),它就可以工作。 我应该怎么做才能让 .load() 识别表达式而不是像对待文本一样对待它?
我也试过在主页中移动 if 语句,但是由于元素尚未定义,脚本将无法运行,因为此时 header 尚未加载。
谢谢!
我通过将我的页眉和页脚声明为 Handlebars partials 并将它们原样加载到视图中而不是使用 jQuery 来解决这个问题。
在我的 index.js 我添加了:
const handlebars = require('handlebars')
handlebars.registerPartial(
'headerAuth',
fs.readFileSync(__dirname + "\views\partials\header-auth.handlebars", 'utf8')
)
handlebars.registerPartial(
'header',
fs.readFileSync(__dirname + "\views\partials\header.handlebars", 'utf8')
)
handlebars.registerPartial(
'footer',
fs.readFileSync(__dirname + "\views\partials\footer.handlebars", 'utf8')
)
然后,在页面内部,调用 header/footer 和
<header>
{{> header}}
</header>