首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Keystone/Nunjucks,数据不会传递到模板

在使用 KeystoneJS 和 Nunjucks 时,确保数据正确传递到模板的关键是理解如何在 KeystoneJS 中设置和使用上下文数据

  1. 设置全局上下文数据

在 KeystoneJS 中,你可以通过 keystone.prepareContext 函数来设置全局上下文数据。这个函数接收一个 { context, req } 参数,你可以在其中添加任何需要在所有模板中可用的数据。

代码语言:javascript
复制
keystone.prepareContext = async ({ context, req }) => {
  context.myGlobalData = 'This is global data';
};
  1. 在路由处理器中设置上下文数据

对于特定路由,你可以在路由处理器中设置上下文数据。这样,只有该路由的模板才能访问这些数据。

代码语言:javascript
复制
keystone.createItem({
  listKey: 'MyList',
  path: '/my-route',
  async resolve({ context }) {
    context.myRouteData = 'This is route-specific data';
    return {};
  },
});
  1. 在 Nunjucks 模板中使用上下文数据

在 Nunjucks 模板中,你可以直接访问上下文数据。例如:

代码语言:javascript
复制
<p>{{ myGlobalData }}</p>
<p>{{ myRouteData }}</p>
  1. 确保数据在正确的生命周期阶段被设置

请注意,上下文数据需要在视图渲染之前被设置。确保你在 KeystoneJS 的适当生命周期阶段(如 prepareContext 或路由处理器)中设置数据。

  1. 检查中间件和插件

有时,中间件或插件可能会影响上下文数据的传递。确保没有中间件或插件意外地修改或覆盖了你的上下文数据。

  1. 调试和日志记录

如果数据仍然无法传递到模板,尝试在关键点添加日志记录以检查数据是否已正确设置。这可以帮助你识别问题所在。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券