JADE + EXPRESS: l'Itération sur l'objet dans inline code JS (côté client)?
je veux mettre en œuvre une carte google basé sur son api. je veux ajouter un chemin d'accès basé sur les coordonnées. donc je obtenir mes coordonnées à partir de mon modèle et que vous souhaitez effectuer une itération sur l'objet pour fille la carte avec cette points. dans mon modèle jade-je inclure l'api js code comme ceci:
script(type='text/javascript')
function initialize() {
var myLatLng = new google.maps.LatLng(0, -180);
var myOptions = {
zoom: 3,
center: myLatLng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var flightPlanCoordinates = [
- if (typeof(pins) != null)
- var.pins.forEach(function(pin) {
new google.maps.LatLng(pin.latitude, pin.longitude),
- })
new google.maps.LatLng(0,0)
];
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
strokeColor: "#FF0000",
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
}
div#map_canvas(style='height: 500px; background-color: #990000;')
le problème est: jade rend cet extrait
var flightPlanCoordinates = [
- if (typeof(pins) != null)
- var.pins.forEach(function(pin) {
new google.maps.LatLng(pin.latitude, pin.longitude),
- })
new google.maps.LatLng(0,0)
];
comme elle l'est dans le modèle jade source... l' - si etc. ne pas obtenir analysé! des idées?
merci!
OriginalL'auteur Tronic | 2011-06-07
Vous devez vous connecter pour publier un commentaire.
L'ensemble de la balise de script (tout ce qui est en retrait sous elle) va être passé au travers de raw sans plus d'analyse. Jade n'modèles HTML pas de modèles HTML plus imbriquée javascript de templating. Pour passer votre
pins
variable de jade local variable de modèle de données à code source du script, vous aurez à faire à une autre méthode, comme à l'aide de matières jade pour rendre une petite balise de script qui appelle simplement votreinitialize
fonction avec lapins
données littérales, ou de coller votrepins
des données dans les dom quelque part et puis le lire à partir de là. Quelque chose le long de ces lignes en dessous de votre balise de script (pseudo-code, ne l'ai pas testé)OriginalL'auteur Peter Lyons
J'ai passé la valeur de l'élément d'entrée, par exemple:
Accessible via jQuery:
Joe
OriginalL'auteur Joe
Vous pouvez utiliser ceci:
var ok = #{someObjectOrNull} ? true : false
. En outreok
ne sera pas défini. Au lieu d'utiliser Pierre de Lyon méthode!= "var ok = " + (user ? "true" : "false") + ";"
OriginalL'auteur
les balises de script sont purement texte, vous ne pouvez pas facilement mélanger le Jade de générer le javascript, c'est généralement le reflet d'une mauvaise conception. Vous pouvez simplement sérialiser les choses comme JSON que vous avez besoin sur le client, ou d'utiliser express-exposer pour ce faire
avec quelque chose comme express-exposer :p il n'y a pas de "avant" de l'envoyer au client, vous ne pouvez pas opérer sur le client, sans votre balisage/js il
La droite, qui fait sens, merci
OriginalL'auteur tjholowaychuk
côté serveur
côté client
OriginalL'auteur Cherif
J'ai eu un problème similaire et cette ligne de code résolu:
La réponse est venue de ce post
OriginalL'auteur Erjim