获取当前 url 查询字符串
Get current url query string
我正在尝试编写一个 handlebars helper 来输出当前的 url 查询字符串。然后我将使用该查询字符串来填充模板。我正在使用 assemble 生成 html 文件。
我的 url 看起来像这样:groups/group-details/?id=1
我想获取 id 值。
这是我的帮手:
Handlebars.registerHelper('currentId', function() {
return document.location.search.split('?')[1].split('=')[1];
});
我在我的 .hbs 模板中这样调用它:
{{currentId}}
我希望它在这个例子中只是吐出 1
但没有显示任何内容。
我哪里错了?
- 编辑 -
在 Web 检查器控制台中四处挖掘显示我的助手已注册,但如果我在 return 语句上放置断点,它永远不会被击中。我假设助手不是 'executed'.
不太确定你为什么会出错。
但是,我会在这里使用正则表达式。
用于从 groups/group-details/?id=1
中解析 1
var a = (new RegExp('/?id=(\d)+'));
var v = a.exec('groups/group-details/?id=1')[1];
console.log(v);
另外,我试过了
"groups/group-details/?id=1".split('?')[1].split('=')[1]
而且 returns 1
很好。
我选择正则表达式的原因是你已经在进行两个字符串操作,这可能不是最有效的方法。
如果您使用 assemble 创建 html,则 assemble 正在使用 Handlebars 执行渲染过程。此渲染过程将尝试解析服务器上的 {{currentId}}
模板。
如果它这样做了,我预计助手内部会出现错误,因为 document.location.search
不可用。由于您在那里没有收到错误,我假设该助手未在 assemble 中注册,并且仅在您的 Handlebars 前端实例中注册。如果它没有在 assemble 中注册,那么 {{currentId}}
会被 Handlebars 解释为一个值并且不呈现任何内容。
TL;DR;
混合使用前端模板和后端模板时,您需要对前端模板进行转义,这样后端进程就不会渲染它们。尝试使用 \{{currentId}}
查看是否使用了助手。
我正在尝试编写一个 handlebars helper 来输出当前的 url 查询字符串。然后我将使用该查询字符串来填充模板。我正在使用 assemble 生成 html 文件。
我的 url 看起来像这样:groups/group-details/?id=1
我想获取 id 值。
这是我的帮手:
Handlebars.registerHelper('currentId', function() {
return document.location.search.split('?')[1].split('=')[1];
});
我在我的 .hbs 模板中这样调用它:
{{currentId}}
我希望它在这个例子中只是吐出 1
但没有显示任何内容。
我哪里错了?
- 编辑 -
在 Web 检查器控制台中四处挖掘显示我的助手已注册,但如果我在 return 语句上放置断点,它永远不会被击中。我假设助手不是 'executed'.
不太确定你为什么会出错。
但是,我会在这里使用正则表达式。
用于从 groups/group-details/?id=1
1
var a = (new RegExp('/?id=(\d)+'));
var v = a.exec('groups/group-details/?id=1')[1];
console.log(v);
另外,我试过了
"groups/group-details/?id=1".split('?')[1].split('=')[1]
而且 returns 1
很好。
我选择正则表达式的原因是你已经在进行两个字符串操作,这可能不是最有效的方法。
如果您使用 assemble 创建 html,则 assemble 正在使用 Handlebars 执行渲染过程。此渲染过程将尝试解析服务器上的 {{currentId}}
模板。
如果它这样做了,我预计助手内部会出现错误,因为 document.location.search
不可用。由于您在那里没有收到错误,我假设该助手未在 assemble 中注册,并且仅在您的 Handlebars 前端实例中注册。如果它没有在 assemble 中注册,那么 {{currentId}}
会被 Handlebars 解释为一个值并且不呈现任何内容。
TL;DR;
混合使用前端模板和后端模板时,您需要对前端模板进行转义,这样后端进程就不会渲染它们。尝试使用 \{{currentId}}
查看是否使用了助手。