我有这样的示例数据:
data = {opt1: 'One', opt2:'Two', opt3:'Three'};
tmplString = <li>${opt1}</li><li>${opt2}</li>??IF OPT3??
$('#node').append(tmplString, data);
在我的tmplString
我希望仅在传入的数据具有名为opt3
的属性时才呈现opt3
。如果我使用{{if opt3}}
,则在数据中没有opt3
时会抛出错误。有没有办法可以使用像if(prop in obj)
这样的东西。
答案 0 :(得分:3)
我最近遇到了这个问题并尝试了idrumgood提供的解决方案。不幸的是,在我的情况下,数据可能为null或者可能是未定义的
typeof null === "object"
因此在值上使用typeof不会区分null和实际数据,从而导致jquery模板出错。我发现如果使用$ data模板变量来定义变量,则可以避免此问题。例如,而不是:
{{if opt3}}<li>${opt3}</li>
使用它:
{{if $data.opt3}}<li>${opt3}</li>
这是展示此解决方案的jsfiddle
答案 1 :(得分:2)
你应该可以使用:
if(typeof opt3 == "string")
或者,如果你可能有一些字符串以外的东西:
if(typeof opt3 != "undefined")