我有一个使用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中可访问?如果是这样的话,是怎么做的?
谢谢!
发布于 2015-09-21 20:43:31
一般来说,在express (与大多数视图引擎一样)中,您在调用render函数时传递模型中所需的任何属性。您可以在模型对象中传递您想要的任何内容,包括一个类(它最终是一个函数--因此是一个对象):
app.get('/', function (req, res) {
res.render('layout', { MyClass });
});https://stackoverflow.com/questions/32702572
复制相似问题