Jac*_*die 6 javascript node.js express pug
在这里与Jade和Express合作.
'#{value.users}'
是一个数组.
'#{user.username}'
是一个字符串.
想要做 if '#{value.users}'.indexOf('#{user.username}')
如果为true,那么我会显示一堆东西,否则,不应该渲染.
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
Run Code Online (Sandbox Code Playgroud)
https://github.com/visionmedia/jade#a8
或者,您可以使用下划线库.
http://underscorejs.org/#indexOf
如果您想在Jade模板中使用它,请务必在您的应用中要求()它或请求本地人.
我不熟悉Jade,但你不需要测试!= -1或== 1?
str.indexOf('#{user.username}') ! = -1
Run Code Online (Sandbox Code Playgroud)
或者因为你正在测试一个数组,所以有些东西.
array.toString().indexOf('#{user.username}') != -1
Run Code Online (Sandbox Code Playgroud)
更新:随着ES6的出现,我在下面稍微更新了一下
array.includes('#{user.username}') // returns true or false
str.includes('#{user.username}') // returns true or false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4773 次 |
最近记录: |