我的路线需要将一系列JavaScript对象传递给哈巴狗模板。
router.get('/edit/:itemObjectId', async function(req, res, next) {
var itemObjectId = req.params.itemObjectId;
var equipmentCategoryArr = [];
var lifeExpectancyArr = [];
var businessUnitResponsibleArr = [];
var item = undefined;
try {
item = await db_item.getItem(itemObjectId);
// Where item["result"] is either undefined or a JavaScript Object. E.g. {"createdAt":"2018-11-07T04:07:44.587Z","updatedAt":"2018-11-07T04:25:18.526Z","item_name":"GM Portable","manufacturer":"GM"}
res.render('editItem', {
title: 'Edit item details', // Give a title to our page
item: item["result"],
equipmentCategoryArr: req.app.locals.equipmentCategoryArr,
lifeExpectancyArr: req.app.locals.lifeExpectancyArr,
businessUnitResponsibleArr: req.app.locals.businessUnitResponsibleArr
});
} catch (err) {
return Promise.reject(JSON.stringify({ "Error": err }));
}
});
哪里
item["result"]
可以是未定义的,也可以是JavaScript对象。
在editItem.pug页面上,我需要在JavaScript中使用该项目。
block extraScript
script.
console.log(!{JSON.stringify(item)});
但是,如果传递的项目未定义,则它将呈现为“ console.log();
”。因此!{JSON.stringify(item)}
根本没有呈现。
我如何检查项目在前端是否未定义?
答案 0 :(得分:1)
您可以使用三元运算符(condition ? ifTrue : ifFalse
)在三个位置进行操作
在路线中,您可以将其从未定义状态切换为空对象
item: item["result"] ? item["result"] : {}
在模板中,您可以应用相同的逻辑:
console.log(!{ item ? JSON.stringify(item) : '{}' } );
您将需要执行以上两项操作之一,以确保某些内容已呈现到客户端代码中,否则,您将面临来自空表达式的语法错误:
var item = ;