Question

J'ai eu un bug qui a été mise sur écoute-moi pendant des jours. Je suis assez nouveau pour noeud et le système de Jade templating donc garder avec moi: Je suis à la recherche d'ajouter des feuilles de style de la façon suivante:

app.js (Express):

app.get('/', loadUser, function(req, res) {
 var User = req.user;
 // console.log(User.groups[2]);
 // var groups = User.groups.split(',');
 // OK DUh. This only gets called when the client has the script Socket.IO
 // and client runs socket.connect()

 getMessages(User, function(messages) {

  var locals = {
   scripts: [
    'https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js',
    'index.js'
   ],

   stylesheets: [
    'index.css'
   ],

   user : User,
   messages: messages
  };

  console.log('ok');

  res.render('app.jade', {locals : locals});

 });

});

Dans layout.jade (qui est exécuté avec app.jade) J'ai:

!!! 5
html
 head
  title UI
  link(rel='stylesheet', href = 'stylesheets/reset.css')
  link(rel='stylesheet', href = 'stylesheets/layout.css')
  - var stylesheets = stylesheets || [];
            #{stylesheets}
  - each stylesheet in stylesheets
   - if(stylesheet.indexOf('http') >= 0)
    link(rel='stylesheet', href = stylesheet)
   - else
    link(rel='stylesheet', href = "stylesheets/"+stylesheet )

De plus en plus ... Je continue à courir dans la même erreur:

9. ' - if(stylesheet.indexOf(\'http') >= 0)'

Object function () {
  var o = {}, i, l = this.length, r = [];
  for(i=0; i
  for(i in o) r.push(o[i]);
  return r;
} has no method 'indexOf'

.. Gotcha est que cela fonctionne exactement de modèle dans une autre application qui passe dans les mêmes variables exactes: J'apprécierais vraiment des suggestions les gars que vous avez sur cette question épineuse

Merci! Matt Mueller

Était-ce utile?

La solution

Alors, voici votre problème ...

dans cette ligne:

res.render('app.jade', {locals : locals});

vous passez dans les locaux ==> les habitants, ce qui est un hachage (ok, donc je suis un gars de PERL, je pense que JS les appelle « tableaux associatifs »)

Alors maintenant dans votre modèle de jade, nous avons la ligne:

 - var stylesheets = stylesheets || []; 

à l'intérieur JADE, vous avez défini la variable « population locale », mais tout le reste est caché sous que, si la variable « » n'est pas les feuilles de style définies (locals.stylesheets est défini à la place). Donc, cette ligne de code définit la variable « à » feuilles de style « [] »

Alors, voici où je dois spéculer. « IndexOf » est une méthode de l'objet Array. Peut-être des tableaux construits à l'intérieur JADE n'ont pas cette méthode alors que les tableaux construits dans Node.js ont cette méthode. Ce qui expliquerait pourquoi vous obtenez une erreur en essayant d'appeler « stylesheets.indexOf (...) »

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top