我正在为我的模板系统使用jade模板,通过我的gulpfile.js将json文件作为jade locals
传递,但我似乎无法深入了解json。我觉得我忽视了一些基本的东西,但无法在任何地方找到一个例子。
gulpfile.js:
将json文件传递给jade
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}
JSON:
[
{
"FirstName":"John",
"LastName":"Doe",
"Title":"Strategist",
"Tier":"Founder",
"Description":"",
"Email":"",
"Links":""
},
...
]
但是,如果我循环的项目在根目录中,那只对我有用,只要我将json更深一层,我就无法根据{{1}使其工作}。我想让json更深入,所以我可以在其中的不同部分而不仅仅是员工。
key
我尝试了几种不同的方法来挖掘json并且到目前为止都失败了。
ATTEMPT 1:调整变量调用并保持相同的循环
[{
"employees": [
{
"FirstName":"Jason",
"LastName":"Bellinger",
"Title":"Lorem Ipsum",
"Tier":"",
"Description":"",
"Email":"",
"Links":""
},
...
]
}]
我在运行- var employees = locals.employees
还可以尝试:
$gulp watch
得到相同的结果。
尝试2:不要使用- var employees = locals['employees']
并直接在我的循环中调用var
locals
和
for employee in locals.employees
我最终得到了同样的错误。
尝试3:
保留for employee in locals["employees"]
并调整循环
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
中的方法......
答案 0 :(得分:2)
您需要访问locals变量中的数组。
local = 1的长度,即整个员工阵列
您需要将employees =设置为locals变量内的数组:
" - var employees = locals [0] .employees"
答案 1 :(得分:0)
我知道这是基本的东西。我将所有内容还原到原始设置并更改了var
,这样就可以了。
- var employees = locals[0]['employees']
说实话,我以为我已经尝试了这个,但又回来再试一次......