请查看以下代码
for story in book
if story.title.length < 140
- var storyTitle = story.title;
else
- var storyTitle = story.title.substring(0, 140) + '...';
.tiles
a(href= 'http://' + story.link)
img(src=story.thumbnail, width='150', height='150')
p Title: #{storyTitle}
p Date: #{story.time}
p Author: #{story.authorName}
这对我有用。然而,它告诉我,在tmes我可以使用story.attribute,并且在必须使用#{story.attribute}的地方。
例如。如果我使用该行
p Title: storyTitle
没有胡须,它只是在浏览器中打印字符串“Title:storyTitle”。
另一个例子,如果我使用img(src=#{story.thumbnail}, width='150', height='150')
,它不起作用,我在浏览器中得到一个html字符串(%20%20 ......某事......)。
答案 0 :(得分:7)
简单地说
等号
(=)
后,内部代码块没有花括号。其他地方都使用#{}
。
答案 1 :(得分:4)
区别在于标签的内容和属性。在属性中,您可以使用不带大括号的变量,例如
img(src=story.thumbnail
因为你不能只将文本放在属性值中,所以它必须是一个字符串:
img(src="/images/story.jpg")
你不能只做
img(src=/images/story.jpg)
但是在标签的内容中,你必须使用hash + braces #{}
,这样Jade知道哪些位是变量,哪些位只是文本。
如果要在标记属性中使用hash + braces,可以这样做:
img(src="#{story.thumbnail}")