Comment dire si une propriété existe et est fausse?

J'ai du mal à déterminer si les données passées dans le modèle jquery existent et est fausse sans erreur. C'est ce que j'utilise pour tester

<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?

Vous pouvez utiliser une else déclaration de plus là-bas en utilisant une === false vérification, 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}} 

Vous pouvez le tester ici . Le typeof vérification est parce que vous obtiendrez une Value is not defined erreur Value is not defined avec seulement la Value === false . Vous ajouteriez d'autres contrôles, par exemple {{else typeof(Value) == "undefined"}} serait vrai si la valeur n'était pas spécifiée.

Vous pouvez écrire une fonction pour vérifier:

 $(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)}}