Domanda

Ho avuto un bug che è stato bugging me per giorni. Sono abbastanza nuovo per nodo e il sistema di template di Giada modo da portare con me: sto cercando di aggiungere fogli di stile nel seguente modo:

App.js (espresso):

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});

 });

});

In layout.jade (che viene eseguito con app.jade) ho:

!!! 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 )

Inoltre altro ... io continuo a correre nello stesso errore:

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'

Ora .. il punto è che questo esatto opere di modelli in un'altra applicazione che passa nella stessa identica variabili: Vorrei davvero apprezzare qualsiasi suggerimento voi ragazzi hanno su questa spinosa questione

Grazie! Matt Mueller

È stato utile?

Soluzione

Quindi, ecco il tuo problema ...

in questa linea:

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

si passa in locali ==> gente del posto, che è un hash (ok, quindi sono un ragazzo PERL, penso JS chiama 'array associativi' li)

Così ora all'interno del vostro modello di giada abbiamo la riga:

 - var stylesheets = stylesheets || []; 

all'interno JADE, è stato definito il "locali" variabili, ma tutto il resto è nascosto sotto che, in modo che le variabili "fogli di stile" non è definito (locals.stylesheets è definito invece). Quindi questa riga di codice imposta i "fogli di stile" variabili a "[]"

Quindi, ecco dove devo speculare. "IndexOf" è un metodo dell'oggetto Array. Forse array costruiti all'interno JADE non hanno questo metodo mentre gli array costruiti node.js associ questo metodo. Il che spiegherebbe perché si ottiene un errore nel tentativo di chiamare "stylesheets.indexOf (...)"

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top