我有一个使用Express和Vash的Node.js应用程序。我的布局看起来像这样:
layout.vash
<!DOCTYPE html>
<html>
@{
model.items = MyClass.LoadItems();
}
<head>
</head>
<body>
</body>
</html>
MyClass
是一个ES6类,定义如下:
MyClass.js
'use strict';
class MyClass {
constructor() {
}
static LoadItems() {
var items = [];
// ...
return items;
}
}
我的挑战是,当我加入model.items = MyClass.LoadItems();
行时,我的视图无法加载。如果我注释掉该行,则视图将按预期加载。我怀疑因为该行使用ES6,所以存在一些编译问题。当我包含该行时,我在控制台窗口中看到以下错误:
ERROR:
ReferenceError: Problem while rendering template at line 2, character 16.
Original message: Problem while rendering template at line 2, character 16.
Original message: MyClass is not defined.
Context:
1 | <!DOCTYPE html>
> 2 | <html lang="en">
3 | @{
4 | model.items = MyClass.LoadItems();
5 | var navItemsB = [];
.
Context:
1 | @html.extend('layout', function(model){
> 2 | @html.block('content', function(model){
3 | <div>
4 | <div
有没有办法在MyClass
内访问layout.vash
?如果是这样,怎么样?
谢谢!
答案 0 :(得分:0)
一般来说,在express中(与大多数视图引擎一样),在调用render函数时,可以传递模型中所需的任何属性。你可以在你的模型对象中传递你想要的任何东西,包括一个类(它最终是一个函数 - 因此对象):
app.get('/', function (req, res) {
res.render('layout', { MyClass });
});