在使用 KeystoneJS 和 Nunjucks 时,确保数据正确传递到模板的关键是理解如何在 KeystoneJS 中设置和使用上下文数据
在 KeystoneJS 中,你可以通过 keystone.prepareContext
函数来设置全局上下文数据。这个函数接收一个 { context, req }
参数,你可以在其中添加任何需要在所有模板中可用的数据。
keystone.prepareContext = async ({ context, req }) => {
context.myGlobalData = 'This is global data';
};
对于特定路由,你可以在路由处理器中设置上下文数据。这样,只有该路由的模板才能访问这些数据。
keystone.createItem({
listKey: 'MyList',
path: '/my-route',
async resolve({ context }) {
context.myRouteData = 'This is route-specific data';
return {};
},
});
在 Nunjucks 模板中,你可以直接访问上下文数据。例如:
<p>{{ myGlobalData }}</p>
<p>{{ myRouteData }}</p>
请注意,上下文数据需要在视图渲染之前被设置。确保你在 KeystoneJS 的适当生命周期阶段(如 prepareContext
或路由处理器)中设置数据。
有时,中间件或插件可能会影响上下文数据的传递。确保没有中间件或插件意外地修改或覆盖了你的上下文数据。
如果数据仍然无法传递到模板,尝试在关键点添加日志记录以检查数据是否已正确设置。这可以帮助你识别问题所在。
领取专属 10元无门槛券
手把手带您无忧上云