即使占位符中没有要填充的数据,也要呈现模板

Render template even when there's no data to be filled in placeholders

本文关键字:数据 填充 占位符      更新时间:2023-09-26

我使用EJS模板来呈现表单。这个问题不是专门针对EJS的,而是针对JavaScript的任何模板库的。

比如我的模板是
<form>
    <input type="text" name="foo" value="<%= foo %>" />
    <input type="text" name="baz" value="<%= baz %>" />
</form>

一个JSON对象像这样传递给.render方法

tpl.render({foo: "bar", "baz": "qux"})

它填充相应输入框中的值并返回呈现的标记,我们可以将这些标记附加到容器中。

现在我要做的是,它应该被渲染,即使我传递一个空白对象{}。我的意思是,它应该为输入框返回空白值(添加内容的空表单)。

我知道我们可以使用内联的if,如<%= (baz != undefined ? bax : "") %>,或者我们可以做一个虚拟/空白的JSON对象,如{"foo": "", "baz": ""}

但是以上两种方法对我来说都不太好。有更好的方法吗?记住input, select和所有其他标签的巨大表单

是的,三元方法看起来很干净- <%= foo ? foo : '' %>。这可能是最好的处理默认值为您缺少的属性,如下划线与它的_.defaults()