检查传递给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
    不会导致抛出错误。