javascript - 在 Jade 中使用 indexOf

标签 javascript node.js express pug

在这里与 Jade & Express 合作。

'#{value.users}' 是一个数组。

'#{user.username}' 是一个字符串。

尝试执行 if '#{value.users}'.indexOf('#{user.username}')

如果为真,那么我会显示一堆东西,否则不应该被渲染。

Jade 的语法没问题,但即使 #{value.users}'.indexOf('#{user.username}') 是假的,if 语句中的内容也是渲染。

例如,如果 user.username = bob,并且 value.users = ['tim', 'billy'],则 if 声明正在通过,但显然不应该如此。

我做错了什么?

最佳答案

不应该是#{value.users.indexOf(user.username)}吗?

执行 #{} 中的任何 js 命令。您应该能够将整个表达式放入单个 '#{}'

通过说 if '#{value.users}'.indexOf('#{user.username}') '#{value.users}' 是被序列化为一个字符串,当使用 .indexOf() 时,它在字符串中搜索,而不是原始数组。

如果你在if语句中使用它,为什么不直接执行js呢? 例如。

- if ( value.users.indexOf(user.username) )
    p some jade
- else
    p alternate jade

https://github.com/visionmedia/jade#a8

或者,您可以使用下划线库。

http://underscorejs.org/#indexOf

如果你想在 Jade 模板中使用它,请确保在你的应用程序中 require() 它或请求本地。

关于javascript - 在 Jade 中使用 indexOf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15098121/

相关文章:

javascript - 表行说明

javascript - 如何通过鼠标使 Div 可排序?

javascript - 如何将用户推送到对象,PHP 到 JSON

javascript - express.js - 服务器监听但本地主机拒绝连接

javascript - Next.js 架构

javascript - 谷歌 API : Authorized JavaScript Origins

node.js - 如何在不读取标准输入的情况下使用 `npm login` 设置 npm 凭据?

node.js - NodeJS Expres + RedisStore ,请求 session 始终未定义

node.js - 在 Jade 中使 span 位于文本之前

javascript - Socket.io 1.x + Express(使用http): How to send messages to specific client id?