我正在尝试用Jade中的anchor
属性构建一个href
标签。
我确实通过http://jade-lang.com/reference/interpolation/和一些SO问题,但没有帮助我。这是我试过的。
a(href= "http://www.imdb.com/title/#{movie.imdb_id}") Know more
但它呈现
http://www.imdb.com/title/#{movie.imdb_id}
而不是
http://www.imdb.com/title/tt1234567
然而这是有效的
a(href= "http://www.imdb.com/title/" + movie.imdb_id) Know more
这也是。
- var url = "http://www.imdb.com/title/" + movie.imdb_id;
a(href= url) Know more
第一个版本出了什么问题?
插值仅在文本中可用。
您需要对属性使用JS字符串连接:
a(href="http://www.imdb.com/title/" + movie.imdb_id) Know more
如果JavaScript运行时支持ES2015 template string,您也可以使用它们(注意反引号):
a(href=`http://www.imdb.com/title/${movie.imdb_id}`) Know more
当你引用它时,只是告诉帕格“这是一个字符串”。这是基本的JS。 Interpolation works with #{'#{interpolation}'} too!
是一个例子,它使“插值与#{插值}一起工作!”
在这种情况下,使用#{...}
,pug变量声明不起作用,正确的语法就是这样,
a(attributes) Know more
a(href="http://www.imdb.com/title/"+ movie.imdb_id) Know more
属性是一个表达式,因此它可以正确呈现,或者您可以使用带引号的ES5模板文字来将变量与文本一起呈现
a(href=`http://www.imdb.com/title/${movie.imdb_id}`) Know more
请注意,当使用带有模板文字的引号时,您的变量表达式将括在括号中,并带有一个前导的$
符号,即${..expression..}
我对帕格(玉)没有任何了解
但是我的猜测是"a(your code)"
已经是一个信号,以便它已经在控制器的范围内,而且"{variable}"
也是你正在访问控制器范围的指示器。所以
a(href= "http://www.imdb.com/title/#{movie.imdb_id}") Know more
"{}"
里面的a()
不再是你试图访问控制器范围的指示器,因为你已经在控制器的范围内了。所以"{}"
里面的a()
只是一个字符串,{movie.imdb_id}
是链接字符串的一部分。
因此,为了使框架能够识别movie.imdb_id
是变量,您应该将它与实际字符串分开。
注意:这只是一个猜测..我正在使用角度