Frage

Ich habe einen Fehler hat, die mich seit Tagen nervt. Ich bin ziemlich neu in Knoten und dem Jade Templatingsystem so Bär mit mir: Ich bin auf der Suche Stylesheets in der folgenden Art und Weise hinzuzufügen:

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

 });

});

In layout.jade (die mit app.jade ausgeführt wird) habe ich:

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

Plus mehr ... Ich halte in den gleichen Fehler ausgeführt wird:

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'

Nun .. die gotcha ist, dass diese genaue Vorlage Arbeiten in einer anderen Anwendung, die vergeht, in den exakt gleichen Variablen: Ich würde wirklich zu schätzen Anregungen ihr auf diesem heiklen Thema haben

Danke! Matt Mueller

War es hilfreich?

Lösung

Also hier ist das Problem ...

in dieser Zeile:

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

Sie in Einheimischen vorbei ==> Einheimischen, die ein Hash ist (ok, so dass ich ein PERL Typ bin, denke ich, JS nennt sie 'assoziative Arrays')

So, jetzt in Ihrer Jade-Vorlage haben wir die Zeile:

 - var stylesheets = stylesheets || []; 

innen JADE, haben Sie die Variable „Einheimischen“ definiert, aber alles andere ist unter das versteckt, so dass die Variable „Stylesheets“ ist nicht definiert (locals.stylesheets definiert statt). Also diese Codezeile setzt die Variable „Stylesheets“ auf „[]“

Also hier ist, wo ich spekulieren müssen. „IndexOf“ ist ein Verfahren des Array-Objekt. Vielleicht Arrays innerhalb JADE aufgebaut haben nicht diese Methode während in node.js konstruiert Arrays DO diese Methode haben. Welche würde erklären, warum Sie einen Fehler versuchen „stylesheets.indexOf (...)“

nennen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top