我在我的模板系统中使用玉模板,通过我的jade locals将一个json文件作为gulpfile.js传入,但我似乎无法深入研究json。我觉得我忽略了一些基本的东西,但在网上找不到一个例子。
gulpfile.js:
将json文件传递给玉器
gulp.task('html', function() {
gulp.src('./markup/*.jade')
.pipe(jade({
pretty: true,
locals: JSON.parse( fs.readFileSync('./markup/data/website_data.json', { encoding: 'utf8' }) )
}).on('error', gutil.log))
.pipe(gulp.dest('../'))
});然后在我的玉中,为了便于阅读,我只是将locals传递到一个变量中。
- var employees = locals我可以循环遍历json,这是一个层次的深度:
翡翠:
for employee in employees
if employee.Tier === 'Founder'
li
button(data-bio="#{employee.LastName.toLowerCase()}")
img(src="/public/img/employees/#{employee.FirstName.toLowerCase()}-#{employee.LastName.toLowerCase()}.jpg", alt="#{employee.FirstName} #{employee.LastName} | #{employee.Title}")
strong #{employee.FirstName} #{employee.LastName}
| #{employee.Title}杰森:
[
{
"FirstName":"John",
"LastName":"Doe",
"Title":"Strategist",
"Tier":"Founder",
"Description":"",
"Email":"",
"Links":""
},
...
]但是,只有当我循环遍历的项位于根目录中时,这才对我起作用,一旦我使json更深一层,我就无法使它基于key**.运行。我想让json更深一点,这样我就可以在网站的不同部分,而不仅仅是员工。
[{
"employees": [
{
"FirstName":"Jason",
"LastName":"Bellinger",
"Title":"Lorem Ipsum",
"Tier":"",
"Description":"",
"Email":"",
"Links":""
},
...
]
}]我尝试了几种不同的方法来挖掘json,但到目前为止都失败了。
尝试1:调整变量调用并保持相同的循环
- var employees = locals.employees在运行$gulp watch的终端中,我得到“无法读取未定义的属性”的“长度”。
还试着:
- var employees = locals['employees']同样的结果。
尝试2:不要使用var并在我的循环中直接调用locals
for employee in locals.employees和
for employee in locals["employees"]最后我也犯了同样的错误。
企图3:
保持var并调整循环
- var employees = locals
...
for employee in employees
li #{employee.LastName}那么我在终端上没有错误,但是我没有得到任何内容。它产生一个空的li。
所以,我试着在循环中做一个更深的层次,包括:
for employee in employees[0]
li #{employee.LastName}和
for employee in employees['employees']
li #{employee.LastName}我仍然没有得到错误和一个空的li
在我的时代,我已经分析了足够多的json,jade看起来也够简单了,我必须忽略一些基本的东西。谁能让我谦卑一点。
我也尝试过gulp-data,但是我用我的方法将数据输入jade,所以我认为这是我在jade中的方法.
发布于 2015-07-24 16:56:51
您需要访问局部变量内部的数组。local =1的长度,这是员工的整个数组。
您需要将employees =设置为局部变量中的数组,并使用:
"- var employees = locals[0].employees"发布于 2015-07-24 16:47:45
我就知道这是最基本的。我将所有内容恢复到原来的设置中,并更改了var,这是可行的。
- var employees = locals[0]['employees']实话实说,我以为我已经试过了,但又回去再试.
https://stackoverflow.com/questions/31614931
复制相似问题