问题标签 [handlebarshelper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
349 浏览

handlebars.js - 使用把手中的#each 循环访问先前的索引值

在我的车把应用程序中,我试图循环浏览一组帖子。我正在尝试访问每个帖子的 ID。我正在正确获取当前帖子的 ID。但是还是每张图片,我都需要提供上一个和下一个 id。我使用数学助手将索引递增/递减 1,它工作正常。

我的想法是我将使用车把子表达式来计算所需的索引,然后我将使用查找助手来访问该索引处的值。但是我的代码没有按预期工作。有人可以帮我提供正确的代码吗?

更新:我自己想通了。实现了我自己的车把助手。

0 投票
0 回答
1032 浏览

javascript - 使用 Helper 创建唯一 id 并传递给 Handlebars 中的 partials

我正在使用 panini 进行前端开发并动态生成 html。

所以我想知道我们是否能够将辅助函数传递给部分以生成每个部分的唯一 ID?

在我的助手中,我有这个功能

UniqueID.js

用于生成不同的唯一 ID

在 pages 文件夹中,我希望将辅助函数传递给 partials

{{> component id={{UniqueID}} }}

这样在页面级别我可以为每个组件调用具有不同的唯一 id,但在部分级别将共享相同的 id 值。

但是帕尼尼向我显示了这个错误期望'OPEN_SEXPR','ID','STRING','NUMBER','BOOLEAN','UNDEFINED','NULL','DATA',得到'OPEN'等。

这是车把的一些限制还是我认为错误的方式?

0 投票
1 回答
52 浏览

handlebars.js - 从 {{first}}{{last}} 数组 handlebars-helper 访问嵌套属性

{{first}}我不知道如何使用和{{last}}车把助手访问数组上的嵌套属性。我有一个数组, "test" : [{ "a" : 1, "b" : 2 }, { "a" : 2, "b" : 3 }] 我尝试过使用数组语法{{{{last test}}.0.a}}但没有运气。

0 投票
0 回答
109 浏览

templates - 部分作为 Handlebars 中的部分参数

我希望一个部分可以用作另一个部分的参数......并且内部部分也可以在 Handlebars 中使用参数。

想象一下,我可能会在使用部分助手时遇到这样的问题,但是解析字符串数据参数,哎呀......

(这有点相关:将部分作为变量传递

0 投票
0 回答
606 浏览

express - 有没有办法将变量传递给 PugJS 过滤器

使用 Pug 过滤器和 jsTransformer-handlebars 模块,我尝试将一些车把代码插入到将使用本地人的 pug 模板中。然而,由于 Pug 在编译时渲染过滤器,我们不能使用模板本地。所以我想知道让 jsTransformer 在浏览器上可用是否会解决这个问题,如果是这样,如何打包 jsTransformer-handlebars 模块并使其在浏览器上可用。

我有以下通常与车把一起使用的辅助函数:

helpers.jsapp.js中导入,函数设置为应用程序变量。它们都可以在哈巴狗中使用,除了select().

例如,任何 pug 模板中的以下代码按预期返回格式化的日期:

但是,当尝试使用 select 功能时:

给出中断错误:

无法读取未定义的属性“fn”

这很可能是因为我无法像通常在车把中那样传递 options 参数:

我使用车把运行了上述程序,它按预期工作。

我的下一个解决方案是使用哈巴狗过滤器将车把代码插入哈巴狗。但是,当尝试这样做时,变量不会在过滤器中生成。当然,这是因为 pug 在编译时呈现过滤后的代码,因此变量/局部变量永远不会传递到把手代码中。

Pug 在他们的文档中对此有警告

警告
过滤器在编译时呈现。这使它们速度很快,但这也意味着它们不能支持动态内容或选项。

默认情况下,浏览器中的编译无法访问基于 JSTransformer 的过滤器,除非 JSTransformer 模块被显式打包并通过 CommonJS 平台(例如 Browserify 或 Webpack)提供。实际上,您现在正在阅读的页面使用 Browserify 使过滤器在浏览器中可用。

在服务器上预编译的模板没有这个限制。

尽管我目前有一个解决方法,但我真的很想让这个助手与哈巴狗一起工作。我并不特别需要能够将 locals 变量传递到车把过滤器中,因为这可能是不可能的。但是,也许我在哈巴狗身上缺少一些东西可以让select()助手工作?

我真的希望我在哈巴狗中遗漏了一些简单的东西,可以让select()助手工作,或者有一种方法可以让本地人从过滤器中访问。但是,作为一个新手,任何帮助表示赞赏!

0 投票
1 回答
621 浏览

jquery - 逻辑 OR/AND Handlebars.JS 助手,多个参数,第一个总是被检查

以下是作为逻辑 AND/OR 多参数 Handlebars.JS 助手提出的:

Handlebars.js 否则如果

这对我不起作用,因为我需要将其称为

换句话说,

  1. 我的 AND/OR 支持多个参数,
  2. 第一个arg始终是我正在检查的内容,例如

    return (questionType == arg1 || questionType == arg2 || questionType == arg3 ...)

换句话说,我不能像这样写一个愚蠢的 2-param or(..) / and(..),

它应该是多参数,始终检查第一个参数。有什么想法吗?

0 投票
1 回答
1071 浏览

node.js - 无法注册车把助手

我在车把中注册自定义助手时遇到问题。我已经尝试了我能找到的任何东西,但没有任何效果。

这是我在 app.js 中的内容

我在 helpers/handlebars.js 中有这段代码:

(这是我在网上找到的一个例子)

但是当我去我的视图并尝试调用这个助手时:

我收到此错误:

我也尝试在 app.js 中的 Handlebars.register 中使用,但它无法识别 Handlebars。

我究竟做错了什么?如何注册助手?

谢谢!

0 投票
0 回答
402 浏览

jquery - Handlebars JS:将变量从 Handlebars.compile() 传递给脚本

如果我按如下方式调用我的 Handlebars JS 脚本,

我是否可以传递一个标志/变量/参数Handlebars.compile,我可以在脚本内部进行检查?

脚本

我不能使用 Helper 函数,因为没有全局变量或上下文我可以检查以获取myFlag. 这实际上是一个参数,要么提供给渲染过程,要么不提供给渲染过程。我不能这样做:

还是我想多了,有一个简单的解决方案?

0 投票
1 回答
174 浏览

node.js - For .. in Handlebars & Express-flash

我尝试使用带有 Handlebars 的 NodeJS 包“express-flash”,一切都很好,但我无法遍历“messages.errors”。这是我的观点“flash.hbs”的代码:

当我遇到错误时,div 是空的,但他有“危险”类。他检测到错误,但没有检索它。我觉得不可能用车把循环......

谢谢 :)

0 投票
2 回答
128 浏览

json - 您如何将原子部分嵌入到模板数据对象中

我正在使用车把并与 yeoman 和 gulp 组装。

我想通过在数据对象的上下文中调用它来获得一些能够嵌套或注入另一个部分的全球化部分。

一个简单的例子是有一个链接列表,我可以在整个网站的内容中引用这些链接。这背后的原因是需要一致性。例如,如果我在整个网站中引用了 15 次的页面上的文本中有一个链接,但随后意识到我需要添加商标或修改文本,我想更新它一次,而不是 15 次.

这是我想做的一个例子。在 json 文件中定义全局数据:

链接.json

使用简单或复杂的模板从该内容生成部分:

链接.hbs

并且能够通过以某种方式引用它来将该部分嵌入到另一个部分中。这不起作用,但我一直在阅读有关自定义助手的内容,但不知道如何拦截部分并将其绑定到另一个部分。

文本.json

文本.hbs

编译的.html

如果您有可能帮助我理解如何实现这一目标的建议或示例,我将非常感谢您的支持。提前致谢。