2010-10-10 9 views
6

J'ai du mal à déterminer si les données passées dans le modèle jquery existent et sont fausses sans avoir d'erreurs. C'est ce que j'utilise pour testercomment savoir si une propriété existe et est fausse

<html> 
<head> 
<title>jQuery Templates {{if}} logic</title> 
</head> 
<body> 

<p id="results"></p> 
<p>How do you test if the Value exists and is false?</p> 

<script id="testTemplate" type="text/html"> 

    Test ${Test}: 

    {{if Value}} 
     Value exists and is true 
    {{else}} 
     Value doesn't exist or is false 
    {{/if}} 

    <br/> 

</script> 

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript" src="jquery.tmpl.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#testTemplate").tmpl({Test:1}).appendTo("#results"); 
     $("#testTemplate").tmpl({Test:2, Value:true}).appendTo("#results"); 
     $("#testTemplate").tmpl({Test:3, Value:false}).appendTo("#results"); 
    }); 
</script> 

</body></html> 

Est-ce que quelqu'un sait comment le faire?

Répondre

6

Vous pouvez utiliser une autre déclaration else à l'aide il y a un chèque === false, comme ceci:

{{if Value}} 
    Value exists and is true 
{{else typeof(Value) != "undefined" && Value === false}} 
    Value exists and is false 
{{else}} 
    Value doesn't exist or isn't explicitly false 
{{/if}} 

You can test it out here. La vérification typeof est parce que vous obtiendrez une erreur Value is not defined avec seulementValue === false. Vous ajouteriez également d'autres chèques, par exemple {{else typeof(Value) == "undefined"}} serait vrai si la valeur n'était pas spécifiée.

+0

ce n'est pas joli mais ça marche, merci! –

1

Vous pouvez écrire une fonction pour vérifier que vous:

$(document).ready(function() { 
    function isExplicitlyFalse(f) { return f === false; } 

    $("#testTemplate").tmpl({Test:1, isExplicitlyFalse: isExplicitlyFalse}).appendTo("#results"); 
    $("#testTemplate").tmpl({Test:2, Value:true, isExplicitlyFalse: isExplicitlyFalse}).appendTo("#results"); 
    $("#testTemplate").tmpl({Test:3, Value:false, isExplicitlyFalse: isExplicitlyFalse}).appendTo("#results"); 
}); 

puis dans votre modèle:

{{if item.isExplicitlyFalse(Value)}} 
Questions connexes