【问题标题】:How to use MVC viewBag concept in express js?如何在 express js 中使用 MVC viewBag 概念?
【发布时间】:2017-01-04 05:17:10
【问题描述】:

我正在使用 express js 4.1 和车把模板 4.0。渲染页面时,我将对象集合从 express route.get('/') 发送到 handlebar(.hbs) 视图文件。是否有可能像 viewbag(类似于 MVC)那样发送对象,并且应该使用 hbs 文件中的 @viewbag 访问这些对象?下面的代码用于渲染 hbs 文件以及 2 个对象的集合

var gridData =  [
          { Name: 'xxxx', City: 'dddd' },
          { Name: 'yyyy', City: 'rrrr' },
          { Name: 'zzzz', City: 'ssss' }
    ]
resultSet["gridData"] = gridData;
resultSet["newdata"] = [1,2,3];
res.render('user-list',  {viewBag: resultSet});

这里我需要使用viewBag作为hbs中的@viewBag.gridData或者@viewBag.newdata来绑定这些数组值。另外,由于express js遵循MVC结构,请建议如何在hbs文件中使用@HTML helpers和@section ControlsSection{}。

【问题讨论】:

  • 将此行改为res.render('user-list', {viewBag: resultSet})
  • 是的.. 很好.. 我的实际问题是如何在 hanblebars 中使用 HTML 助手和@viewBag。
  • 你不能在 NodeJS 中使用 DotNet 库。你应该找到替代的 npm 包,或者最好自己编写。
  • 另外,在处理 {{viewBag.gridData}} 这样的 json 数据时,您应该遵循 handlebars 语法,而不是 @
  • 我应该将此 viewBag.gridData 绑定为网格的数据源。我将把这个数据源绑定在 hbs 视图文件的 标记内。由于我在脚本标签中使用它,我无法像这样使用 {{viewBag.gridData}}

标签: node.js express handlebars.js express-handlebars


【解决方案1】:

我替换了res.render('user-list', {viewBag: gridData});而不是

res.locals.gridData = JSON.stringify(gridData); // To make it global and accessible in hbs view file
res.locals.newdata = newdata; 
res.render('user-list');

在渲染“用户列表”页面时,dataSource: {{{gridData}}} 将为网格绑定相应的数据源,此datasource 是 json 类型。终于成功了!!!

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2022-07-29
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多