Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
196
rated 0 times [  197] [ 1]  / answers: 1 / hits: 43985  / 13 Years ago, fri, september 2, 2011, 12:00:00

What is the best way to check for an undefined property in an ejs template?



(I'm using the node.js package by TJ Holowaychuk)



Example:



var tpl = '<% if (foo) { %>foo defined<% } else { %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: baz } }));


I'd expect this to render foo undefined. It does throw an foo undefined error instead.



I know that this is not supposed to be an issue, since this is expected behavior in the tests. Is there an easy way to avoid this?



The only solution I found is using the hasOwnProperty method.



var tpl = '<% if (hasOwnProperty(foo)) { %>foo defined<% } else { %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: baz} }));


This doesn't throw any errors.



Is there a better way to keep the template clean? Or why does it throw this error?


More From » node.js

 Answers
62

Another way to test for a property is to reference it indirectly via the locals object. Using your example:



var tpl = '<% if(locals.foo){ %>foo defined<% }else{ %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: baz} }));

[#90290] Thursday, September 1, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
zariahdiamondz

Total Points: 649
Total Questions: 109
Total Answers: 88

Location: Tajikistan
Member since Thu, Apr 14, 2022
2 Years ago
;