J'essaie de faire fonctionner la boucle icanhaz / moustache, telle que définie dans cette réponse et je reçois une erreur suivante dans la console du navigateur:
Uncaught Error: Syntax error, unrecognized expression: <option value="1">First</option> <option value="2">Second</option>
Je ne sais pas pourquoi. Je viens de constater que c'est la ligne qui cause le problème:
ich.myTemplate(listOfStuff);
C'est mon code entier:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/tr/html4/transitional.dtd"> <html> <head> <title>icanhaz.js demo</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" ></script> <script type="text/javascript" src="https://raw.github.com/HenrikJoreteg/ICanHaz.js/master/ICanHaz.js"></script> </head> <body> <select id="mySelectBox"> </select> <script id="myTemplate" type="text/html"> {{#stuff}} <option value="{{key}}">{{desc}}</option> {{/stuff}} </script> <script> $(document).ready( function() { var listOfStuff = {stuff: [ {key: "1", desc: "First"}, {key: "2", desc: "Second"} ]}; var x = ich.myTemplate(listOfStuff); $("#mySelectBox").append(x); }); </script> </body> </html>
Merci pour toutes les suggestions!
Enfin, j'ai trouvé l'erreur. C'était le problème de la version jquery – 1.9.1 renvoyait l'erreur et 1.8.3 n'était pas. Comparez ces démos:
Pour la version 1.9.1, regardez la console javascript.
De plus, si j'ai changé
<script id="myTemplate" type="text/html"> {{#stuff}} <option value="{{key}}">{{desc}}</option> {{/stuff}} </script>
à
<script id="myTemplate" type="text/html"> {{#stuff}}<option value="{{key}}">{{desc}}</option>{{/stuff}} </script>
Pour 1.9.1, il a également fonctionné correctement.
Edit: c'est un problème ouvert sur icanhaz / github . Si vous le souhaitez, aidez-vous à réparer ce bug!
var listOfStuff = {stuff: [ {key: "1", desc: "First"}, {key: "2", desc: "Second"} ]}; var html = ich.myTemplate(listOfStuff); $("#mySelectBox").append($(html));
Essayez-vous cela?