检查传递给jquery tmpl的对象的属性

时间:2011-12-05 21:07:47

标签: 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);

在我的tmplString我希望仅在传入的数据具有名为opt3的属性时才呈现opt3。如果我使用{{if opt3}},则在数据中没有opt3时会抛出错误。有没有办法可以使用像if(prop in obj)这样的东西。

2 个答案:

答案 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")