在玉中转义文本

时间:2014-09-19 00:52:39

标签: javascript node.js escaping pug

所以之前已经问过这个问题,但我的输出中一直出现错误。

所以,在玉中逃避文字。

我有这个标记

.left
  :markdown
  each post in site.posts
    a.post(href='#' + post.title)
      h2= post.title

a标签将锚定滚动到相应的帖子。现在我想逃离href内部的post.title,以便删除空格。

现在我看到了像this this这样的答案,但是当我尝试编译所有内容时,它们都会抛出错误。

自定义过滤器抛出错误并显示unknown filter,第二个抛出此错误

Unexpected token ILLEGAL
Potentially unhandled rejection [152] SyntaxError: /Users/mhartington/Github Repos/ionic-node-faq/views/index.jade:14
    12|       :markdown
    13|       each post in site.posts
  > 14|         a.post(href='#' + #{post.title})
    15|           h2= post.title
    16|     .right
    17|       each post in site.posts

关于我做错的任何想法?

1 个答案:

答案 0 :(得分:2)

您可以使用.replace()

post.title中删除空格
a.post(href='#' + post.title.replace(/\s+/g, ''))

您还可以使用encodeURIComponent()URL-encode个其他特殊字符包含在网址中:

a.post(href='#' + encodeURIComponent(post.title.replace(/\s+/g, '')))

使用#{...}时的错误是因为它只是plain text内的Jade语法。并且,values of attributes被解析为JavaScript,它不支持这种语法。

如果您担心HTML编码属性的值,Jade会根据需要处理。

- post = { title: 'Foo>Bar' }
a(href='#' + post.title)
<a href="#Foo&gt;Bar"></a>