大家好我的应用程序布局有一个小问题。我正在设置我的控制器。
ApplicationController = function(_app) {
this.app = _app;
console.log(this.app); //this works
};
ApplicationController.prototype.index = function(req, res, next) {
console.log(this.app); //this is undefined
res.json("hello");
};
module.exports = function(app) {
return new ApplicationController(app);
};
在我的路线文件中,我正在这样做。
module.exports = function(app) {
//require controllers
var Application = require('./controllers/ApplicationController')(app);
//define routes
app.get('/', Application.index);
app.get('/blah', Application.blah);
return app;
};
我传递的app变量没有显示在其他实例方法中。这是否有理由让我失踪?谢谢你的帮助。
过去我把控制器设置得像这样。
module.exports = function(app) {
var controller = {
//app is defined
res.render('index', {
title: "Index"
});
}
};
return controller;
};
但我更喜欢这种其他模式,而且我更好奇为什么它不起作用。
答案 0 :(得分:2)
尝试更改这些行:
app.get('/', Application.index);
app.get('/blah', Application.blah);
为:
app.get('/', Application.index.bind(Application));
app.get('/blah', Application.blah.bind(Application));
您的路线不会在Application
实例的上下文中调用。