Qual è il modo migliore per verificare la presenza di una proprietà non definita in un modello EJS?Come verificherebbe la proprietà non definita in ejs per node.js?
(sto usando il node.js package da TJ Holowaychuk)
Esempio:
var tpl = '<% if (foo) { %>foo defined<% } else { %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: "baz" } }));
mi aspetto questo di rendere "foo indefinito". Si genera invece un errore foo non definito.
So che questo non dovrebbe essere un problema, poiché questo è il comportamento previsto in the tests. C'è un modo semplice per evitarlo?
L'unica soluzione che ho trovato è l'utilizzo del metodo hasOwnProperty
.
var tpl = '<% if (hasOwnProperty("foo")) { %>foo defined<% } else { %>foo undefined<% } %>';
console.log(ejs.render(tpl, { locals: { bar: "baz"} }));
Questo non genera alcun errore.
C'è un modo migliore per mantenere pulito il modello? O perché genera questo errore?
Questo è quello che volevo. :) – pvorb
Proprio quello di cui avevo bisogno, ma wtf, perché devi farlo ?! :) –
Non sono sicuro di aver controllato la fonte, ma ho il sospetto che il motore di template non si preoccupi delle variabili scope per i valori non definiti. I locatari –