检查传递给jquery tmpl的对象的属性
我有这样一个示例数据:检查传递给jquery tmpl的对象的属性,jquery,jquery-plugins,jquery-templates,Jquery,Jquery Plugins,Jquery Templates,我有这样一个示例数据: data = {opt1: 'One', opt2:'Two', opt3:'Three'}; tmplString = <li>${opt1}</li><li>${opt2}</li>??IF OPT3?? $('#node').append(tmplString, data); data={opt1:'One',opt2:'Two',opt3:'Three'}; tmplString=${opt1}${opt2}
data = {opt1: 'One', opt2:'Two', opt3:'Three'};
tmplString = <li>${opt1}</li><li>${opt2}</li>??IF OPT3??
$('#node').append(tmplString, data);
data={opt1:'One',opt2:'Two',opt3:'Three'};
tmplString=${opt1} ${opt2} 如果OPT3??
$('#node').append(tmplString,data);
在我的
tmplString
中,仅当传入的数据具有名为opt3
的属性时,我才希望呈现opt3
。如果我使用{{If opt3}}
它会在数据中没有opt3
时抛出一个错误。是否有一种方法可以使用类似于if(obj中的prop)
的东西,您应该能够使用:
if(typeof opt3 == "string")
或者,如果其中可能有字符串以外的内容:
if(typeof opt3 != "undefined")
您应该能够使用:
if(typeof opt3 == "string")
或者,如果其中可能有字符串以外的内容:
if(typeof opt3 != "undefined")
我最近遇到了这个问题,并尝试了idrumgood提供的解决方案。不幸的是,在我的例子中,数据可能是空的,或者它可能是未定义的,并且
typeof null === "object"
因此,在值上使用typeof不会区分null和实际数据,从而导致jquery模板出错。我发现,如果使用$data模板变量来限定变量的范围,就可以避免这个问题。例如,与此相反:
{{if opt3}}<li>${opt3}</li>
{{if opt3}}${opt3}
使用以下命令:
{{if $data.opt3}}<li>${opt3}</li>
{{if$data.opt3}}${opt3}
下面是一个演示此解决方案的示例我最近遇到了此问题,并尝试了idrumgood提供的解决方案。不幸的是,在我的例子中,数据可能是空的,或者它可能是未定义的,并且
typeof null === "object"
因此,在值上使用typeof不会区分null和实际数据,从而导致jquery模板出错。我发现,如果使用$data模板变量来限定变量的范围,就可以避免这个问题。例如,与此相反:
{{if opt3}}<li>${opt3}</li>
{{if opt3}}${opt3}
使用以下命令:
{{if $data.opt3}}<li>${opt3}</li>
{{if$data.opt3}}${opt3}
下面是一个演示此解决方案的示例您的意思是:“{if-typeof${opt3}!='undefined'}”?我不熟悉jQuery模板语法,但我拥有的是简单的旧js,如果可以的话。如果元素未定义,检查
typeof
不会导致抛出错误。您的意思是:{if-typeof${opt3}!='undefined'}”?我不熟悉jQuery模板语法,但如果可以的话,我所拥有的是简单的旧js。如果元素未定义,检查typeof
不会导致抛出错误。