Как получить доступ к объекту ejs в express.js - PullRequest
5 голосов
/ 05 января 2012

Я использую экспресс (веб-фреймворк для node.js) с ejs.Теперь я хочу создать свой собственный фильтр, как описано на странице ejs github :

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

1 Ответ

10 голосов
/ 09 января 2012

Вам необходимо указать ejs в вашем приложении и установить для него специальный фильтр, который будет виден для вашего приложения Express. Также обратите внимание, как вы используете фильтр ejs в вашем представлении <%=: data_to_be_filtered | your_filter %>.

Пример применения:

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 (находится в / views)

<%=: data | my_custom_filter %>

Скачать код прямо с github: http://github.com/alessioalex/ejs_filters

Для получения дополнительной информации: https://github.com/visionmedia/ejs

...