Sails.js - 如何从控制器渲染局部?

Sam*_*ier 11 javascript partial-views node.js sails.js

我有一个包含登录表单的部分视图.我想将它从ajax调用渲染到我的控制器.

这是我将返回部分视图的示例:

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!'});
        }
    });
  },
Run Code Online (Sandbox Code Playgroud)

Sam*_*ier 20

啊! 找到了!

如果您的视图是局部视图,只需指定layout: null:

res.view('home/login', {message: 'Login failed!', layout: null});
Run Code Online (Sandbox Code Playgroud)

  • 是的!如果你想全局禁用布局(做更多的Express-3-ish partial-ish方式)你可以在`config/views.js`文件中设置`layout:false`. (3认同)

Tra*_*vis 5

页面底部:http://sailsjs.org/#!dococumentation/views

使用多个布局怎么样?

Express 3删除了对布局的原生支持.在Sails中,我们设法保持这种状态,但我们并未正式支持多种布局.也就是说,至少在EJS中,您必须使用_layoutFile,而不是使用本地布局指示您的自定义布局:

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

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

};
Run Code Online (Sandbox Code Playgroud)

风帆v0.9.7