2

看下面的代码

        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}

这对我有用。然而让我感到困惑的是,有时我可以使用story.attribute,而在某些地方我必须使用#{story.attribute}。

例如。如果我使用这条线

p Title: storyTitle

没有小胡子,它只是在浏览器中打印字符串“Title:storyTitle”。

另一个例子,如果我使用img(src=#{story.thumbnail}, width='150', height='150'),它不起作用,我在我的浏览器中得到一个 html 字符串 (%20%20...something...)。

那么什么给了?

4

2 回答 2

7

简单地说

在等号(=)和内部代码块之后没有花括号。其他任何地方都使用#{}.

于 2013-02-05T21:33:50.043 回答
4

区别在于标签的内容和属性。在属性中,您可以使用不带大括号的变量,例如

img(src=story.thumbnail

因为您不能只将文本放在属性值中,所以它必须是一个字符串:

img(src="/images/story.jpg")

你不能只做

img(src=/images/story.jpg)

但是在标签的内容中,您必须使用哈希+大括号#{},以便 Jade 知道哪些位是变量,哪些位只是文本。

如果你想在标签属性中使用哈希+大括号,你可以这样做:

img(src="#{story.thumbnail}")
于 2013-02-05T17:52:25.507 回答