2012-01-05 51 views
5

我正在使用ejs使用express(node.js的web框架)。现在,我想作为对ejs github page描述创建自己的过滤器:如何访问express.js中的ejs对象

To add a filter simply add a method to the .filters object: 

ejs.filters.last = function(obj) { 
    return obj[obj.length - 1]; 
}; 

问题:我怎么访问EJS对象?我已经试过(天真)在app.js:

ejs.filters.myfilter = function (obj) { 
    .... 
} 

它给我的错误:

ReferenceError: ejs is not defined 

回答

10

您需要要求您的应用程序EJS并设置自定义过滤器就可以了,这将对您的快速应用程序可见。另请注意,您如何在视图<%=: data_to_be_filtered | your_filter %>中使用ejs过滤器。

应用示例:

app.js

var app, express = require('express'), ejs = require('ejs'); 

ejs.filters.my_custom_filter = function(ary) { 
    return ary[ary.length - 1]; 
}; 

app = express.createServer(); 

app.configure(function() { 
    app.set('view options', { layout: false }); 
    app.set('view engine', 'ejs'); 
}); 

app.get('/', function(req, res) { 
    res.render('index', { data: [1, 2, 3, 4, 5] }); 
}); 

app.listen(8080); 
console.log('Server started on port 8080'); 

index.ejs(位于/观看次数)

<%=: data | my_custom_filter %> 

直接从GitHub下载的代码:http://github.com/alessioalex/ejs_filters

更多信息结帐:https://github.com/visionmedia/ejs

+0

太好了,谢谢!我主要是在'<%='处缺少require('ejs')'和冒号。 – topskip 2012-01-10 09:41:47

+0

很高兴帮助,不要忘记你也可以接受答案(除了投票)。 – alessioalex 2012-01-10 09:50:40

+0

是否可以使用块的过滤器? <%block('title',owner | filter_here)%> – chovy 2012-09-30 08:31:06