在Express(node.js)中,如何将本地变量传递到Jade模板中(不传递)

4

这是我的场景:我有一个login.jade模板,用于验证用户身份。在该模板中,我有几个if语句,例如:

- if (badLogin)
        div#loginErr
          | <strong>Please try again</strong> |
          | The password or username you entered is incorrect.

- if (loginError)
        div#loginErr
          | <strong>Please try again later</strong> |
          | Our authentication service isn't available at the moment.

在Express中,我总是需要声明所有可能在Jade模板中使用的本地变量。否则我会得到以下错误提示:
loginError is not defined

我的观点是,如果在Jade模板中有10个包含本地变量的“if”语句,那么在渲染时即使我只在特定情况下使用其中一个变量,我也必须始终传递这10个变量。
我认为,如果我不向Jade模板传递任何变量,“if(var)”的结果将仅为“false”。
有什么办法可以解决这个问题吗?

3
使用JavaScript代码在Jade视图中,如果变量未定义,则显示undefined而不是传递给该变量的值。在Jade视图中使用JavaScript代码时,确保在引用变量之前将其定义并初始化。如果未初始化变量,在引用该变量时将显示undefined。 - Geoff Chappell
1个回答

4

if (typeof loginError !== "undefined")

这段代码允许您检查不存在的变量。

正如@GeoffChappel所提到的,我之前已经处理过这个问题了

不过,我对于它们如何处理注入本地变量的方式改变了主意。我认为他们使用了一个适当的解析器或动态创建新函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接