Rod*_*ano 5 javascript node.js express sails.js
您好我想知道是否有一种将变量或对象传递给布局视图的正确方法?
这就是我现在正在做的事情并且它有效
index: function(req, res){
res.view({ layout: 'mylayout', myvar: 'This is a view var' });
}
Run Code Online (Sandbox Code Playgroud)
但是在每个动作中我都要定义'myvar',这样我就可以在布局级别使用它,所以我想知道是否有某种控制器或布局动作,所以我可以放置我的逻辑?
sgr*_*454 19
实际上从Sails v0.10-rc5开始,您可以使用sails.config.views.localshash来指定默认情况下应该为所有视图提供的变量.所以,在config/views.js这样的:
{
locals: {
myvar : 'this is a view var'
}
}
Run Code Online (Sandbox Code Playgroud)
将var添加到每个视图.这对影响视图引擎的变量非常有用; 请看这里了解更多详情.
您还可以使用Sails v0.10.x中的策略通过更改来跨多个视图设置变量req.options.locals.因此,如果您创建了一个策略/api/policies/decorate.js:
module.exports = function(req, res, next) {
// Default to an object if empty, or use existing locals that may have
// been set elsewhere
req.options.locals = req.options.locals || {};
// Set a new local var that will be available to any controller that
// implements the policy
req.options.locals.myVar = Math.random()
Run Code Online (Sandbox Code Playgroud)
然后设置你/config/policies.js的东西:
module.exports = {
'*': 'decorate'
}
Run Code Online (Sandbox Code Playgroud)
那么任何使用的控制器动作res.view都会myVar在视图中提供该变量.
| 归档时间: |
|
| 查看次数: |
5919 次 |
| 最近记录: |