2012-06-27 8 views
8

Ho 3 file: layoutA.jade, layoutB.jade e index.jade. Come posso impostare a livello di codice quale layout si estenderà index.jade?Come si imposta dinamicamente un layout per un modello Jade da estendere in Node.js/Express 3.0?

Ho provato con:

app.set('view options', { layout: false }); 

con:

res.render('index', { title: 'Express', layout: 'layoutB' }); // older 2.x way? 

non riesco a ignorare qualsiasi cosa impostare in modo esplicito nel file index.jade. Omettere la linea estesa all'interno del file index.jade non ha funzionato neanche.

risposta

6

Diciamo che i file di giada si trovano nella seguente directory:

+ views 
    + shared 
    - layoutA.jade 
    - layoutB.jade 
    + home 
    - index.jade 

aggiungere le impostazioni di layout nell'ordine corretto, e specificare la cartella vista root:

app.set('views', __dirname + '/views'); 
app.set('view engine', 'jade'); 
app.set('view options', { layout: 'shared/layoutA' }); 

Assicurarsi di specificare il cartella corretta (in questo caso 'viste'). Assicurati anche di specificare un layout predefinito valido. Verifica che questo funzioni con una pagina di test prima di immergerti più a fondo.

Una volta che sta lavorando è possibile il layout di default in questo modo:

if(someImportantVar) { 
    res.render('home/index', { title: 'Different layout!', layout: 'shared/layoutB' }); 
} else { 
    res.render('home/index', { title: 'Default layout!'}); 
} 
+0

Correggetemi se sbaglio, ma questa soluzione non è giusto più, è vero? –

+0

@AugustinRiedinger Come per il titolo della domanda, dovrebbe essere corretto per Express 3.0. Non funziona all'interno di quella versione? – JimmyBoh

+0

Non penso che ci sarebbe un problema di compatibilità con 'express 3' vs corrente' express 4.x', ma sul lato jade: Usando 'pug 2.0', posso dire che il parametro' view options' non è usato più (o sarei felice di sbagliare). Ho passato molte ricerche per ottenere un layout dinamico in jade/pug senza successo, quindi questa risposta mi ha frustrato, nonostante non abbia sbagliato. –

Problemi correlati