2013-08-15 5 views
11

Ich habe eine Teilansicht mit meinem Login-Formular. Ich möchte es von einem Ajax-Aufruf an meinen Controller rendern.Sails.js - Wie man einen Teil von einem Controller rendert?

Dies ist die Probe, wo ich meine Teilansicht zurückkehren würde:

postlogin: function (req,res) { 

    var username = req.param('username'); 
    var password = req.param('password'); 

    User.find({ 
     username: username, 
     password: password.salt() 
    }).done(function(err, users){ 
     if(users.length == 1){ 
      // Here I want to return a partial view, not a view 
      res.view('home/login', {message: 'Login success!'}); 
     }else{ 
      // Here I want to return a partial view, not a view 
      res.view('home/login', {message: 'Login failed!'}); 
     } 
    }); 
    }, 

Antwort

20

Ah! Fand es!

Wenn Ihre Ansicht eine Teilansicht ist, geben Sie einfach layout: null:

res.view('home/login', {message: 'Login failed!', layout: null}); 
+3

Yep! Und wenn Sie das Layout global deaktivieren möchten (indem Sie die Dinge mehr auf Express-3-ish-Weise ausführen), können Sie 'layout: false' in Ihrer Datei' config/views.js' setzen. – mikermcneil

5

Unten auf der Seite: http://sailsjs.org/#!documentation/views

Was mehrere Layouts verwenden?

Express 3 entfernt native Unterstützung für Layouts. In Sails haben wir es geschafft, dies beizubehalten, aber wir unterstützen offiziell nicht mehrere Layouts. Das heißt, zumindest in EJS, statt Ihrer benutzerdefinierten Layout mit dem Layout lokalen anzugeben, müssen Sie _layoutFile verwenden:

/** 
* HomeController 
*/ 
module.exports = { 

    index: function (req, res) { 
     res.view({ 
      _layoutFile: '../layouts/other.ejs' 
     }); 
    }, 

}; 

Segel v0.9.7