在这里与 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/