2012-01-05 24 views
5

ejs ile express (node.js web çerçevesi) kullanıyorum. Şimdi ejs github page açıklandığı gibi kendi filtre oluşturmak istiyorum:Express.js adresindeki ejs nesnesine nasıl erişilir?

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

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

soru: Ben ejs nesne olduğunu nasıl erişlebilir ? Ben app.js içinde (safça) denedim:

ReferenceError: ejs is not defined 

cevap

10

Sen uygulamanızda Ejs gerektirmez ve hangi irade, üzerine özel bir filtre ayarlamak gerekir: bana hata veriyor

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

Ekspres uygulamanız için görünür olun. Ayrıca görünümünüzde bir ejs filtresi kullandığınızı unutmayın <%=: data_to_be_filtered | your_filter %>.

Uygulama örneği:

<%=: data | my_custom_filter %> 

github şirketinden kodu indirin (giriş/görünümleri yer almaktadır)

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 app.js: http://github.com/alessioalex/ejs_filters

Daha fazla bilgi Checkout: https://github.com/visionmedia/ejs

+0

Harika, teşekkürler! Ağırlıklı olarak '' ('ejs') 've' <% = 'deki kolon eksikti. – topskip

+0

Yardım aldığınız için teşekkür ederiz, ayrıca cevabı kabul etmeyi unutmayın (oylamaya ek olarak). – alessioalex

+0

bloklu bir filtre kullanmak mümkün mü? <% block ('title', owner | filter_here)%> – chovy

İlgili konular