SailsJs控制器上下文
SailsJs controller context
有人知道将上下文传递给控制器动作的正确方法吗?以下是我想这么做的原因:
---AbstractPageController.js--
module.exports = {
_getPageData: function(req, res) {
return {
data: {
title: this._getTitle(req, res), // if do nothing "this" is global object
menu: this._getMenu(req, res)
}
};
},
_getTitle: function(req, res) { return 'Cool Page'; },
_getMenu: function(req, res) { return [{ href: '/logout' }]; }
};
---ConcretePageController.js——
var _ = require('lodash');
_super = require('./AbstractPageController.js');
module.exports = _.merge({}, _super, {
'main': function(req, res) {
res.view('pageTemplate', this._getPageData(req, res));
},
_getTitle: function(req, res) {
return 'Absolutely - ' + _super._getTitle(req, res);
},
_getMenu: function(req, res) {
return [{ href: '/main/'}].concat(_super._getMenu(req, res));
}
});
这就是为什么我需要背景。
对于这个特殊的情况,我找到了这个解决方案:
---routes.js---
var concreteController = require('../api/controllers/ConcretePageController.js');
module.exports.routes = {
'/concrete_page': function(req, res) { concreteController.main(req, res); }
}
但它看起来有点丑陋,帆钩(例如政策)停止了工作。
我在想另一种方式。这样做的主要目的是将所有逻辑转移到服务,并使用简单的继承。但这对我来说似乎也很奇怪
有什么更好的方法来处理我写的案件的想法吗?
附言:我上面写的所有代码都只是一个例子。
我认为您需要预先设置一些数据以发送到视图模板,对吗?
是的,你可以使用前钩(如midleware)或帆警
我使用帆钩来预加载我们插件中npm模块的帆功能https://github.com/wejs/we-plugin
检查此挂钩,了解如何在控制器之后的所有请求中加载用户区域设置:链接:https://github.com/wejs/we-example/blob/master/api/hooks/we-locale/index.js#L15
您应该直接引用控制器
sails.controllers.yourControllerName.getTitle()
https://stackoverflow.com/a/20994036/1821723
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将函数的上下文应用于javascript变量
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 使用JQuery的动态上下文菜单
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 将值从html传递到AngularJS控制器
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- Ember.js:将Em.$.getJSON转换为promise并将响应绑定到控制器上下文的正确方法
- Ember添加了对转换调用上下文(路由/控制器)的检查
- 角度控制器中的上下文感知科尔多瓦事件
- SailsJs控制器上下文
- 在AngularJS中,在控制器之前加载用户上下文
- 将对象上下文从AngularJS指令传回控制器回调