在HTML属性中交叉值 - 帕格(翡翠)

问题描述 投票:2回答:4

我正在尝试用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

第一个版本出了什么问题?

node.js express pug
4个回答
4
投票

插值仅在文本中可用。

您需要对属性使用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

Reference


0
投票

当你引用它时,只是告诉帕格“这是一个字符串”。这是基本的JS。 Interpolation works with #{'#{interpolation}'} too!是一个例子,它使“插值与#{插值}一起工作!”


0
投票

在这种情况下,使用#{...},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..}


-3
投票

我对帕格(玉)没有任何了解

但是我的猜测是"a(your code)"已经是一个信号,以便它已经在控制器的范围内,而且"{variable}"也是你正在访问控制器范围的指示器。所以

a(href= "http://www.imdb.com/title/#{movie.imdb_id}") Know more

"{}"里面的a()不再是你试图访问控制器范围的指示器,因为你已经在控制器的范围内了。所以"{}"里面的a()只是一个字符串,{movie.imdb_id}是链接字符串的一部分。

因此,为了使框架能够识别movie.imdb_id是变量,您应该将它与实际字符串分开。

注意:这只是一个猜测..我正在使用角度

© www.soinside.com 2019 - 2024. All rights reserved.