我有一个具有以下代码的index.js:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index',{
"title":"Homepage",
"navIndex":"reg",
"navItems":[
{"title":"Home", "link":"/" },
{"title":"Register", "link":"/reg"}
]
});
});
module.exports = router;我有index.pug:
doctype html
html
head
title Welcome!
link(rel='stylesheet' href='css/materialize.min.css')
link(rel='stylesheet' href='css/style.css')
script(src='js/jquery-3.2.1.min.js')
script(src='js/materialize.min.js')
body
block content
nav
div(class='nav-wrapper')
a(href='#' class='brand-logo' class='right') Logo
ul(id='nav-mobile' class='left hide-on-med-and-down')
-
var navItems = #{navItems}
for(x = 0; x < navItems.length; x++)
li
a(href=navItems[x].link) navItems[x].title由于某些原因,我一直得到“意外块内容”错误。
我试过调整我的间隔,但我似乎无法让它起作用。我看过关于未缓冲代码的文档,但我只是不知道如何将navItems对象从index.js传递到pug文件的未缓冲代码部分。我假设您定义了一个变量,就像我以前做过的ex. var navItems = #{navItems}。关于这个问题有任何具体的文档吗?如果没有,我到底做错了什么?谢谢。
编辑:
更新的index.pug如下所示。但是它逐字输出"navItemsx.title“,而不是变量的值。
doctype html
html
head
title Welcome!
link(rel='stylesheet' href='css/materialize.min.css')
link(rel='stylesheet' href='css/style.css')
script(src='js/jquery-3.2.1.min.js')
script(src='js/materialize.min.js')
body
nav
div(class='nav-wrapper')
a(href='#' class='brand-logo' class='right') Logo
ul(id='nav-mobile' class='left hide-on-small-only')
- for(x = 0; x < navItems.length; x++)
li
a(href=navItems[x].link) navItems[x].title发布于 2017-10-09 06:30:57
在您的block文件中有一个index.pug语句,它指示这个文件通常是由其他模板继承的,它将为您的block content提供内容。
我认为从您的block content中删除index.pug语句可以解决您的错误。也可以向block content提供默认内容。
关于您更新的代码,我认为只对属性(即属性内插)不推荐使用#{variableName}语法。
当作为内容的一部分使用时,您可以使用以下任一项:
a(href=navItems[x].link)= navItems[x].title
a(href=navItems[x].link) #{navItems[x].title}现在,关于for循环在缩进方面的差异,如果您使用的是Pug循环,即在开始时没有破折号(-),则需要适当的缩进。
当您在一行开头添加一个破折号(-)时,这一行将被视为纯javascript,然后在大多数情况下不需要缩进下一行。
https://stackoverflow.com/questions/46636394
复制相似问题