我遇到了一个问题,我需要将一些变量绑定到模块的上下文。我有两个文件夹:控制器和模型。在模型中,我有一个这样的模型:
exports = {
name: String,
password: String
}
,控制器如下所示:
exports = {
onMessage: (message) {
Model.doSomething();
}
}
所以我需要访问Controller中的Model而不需要它。我不认为加载模型并将其赋予全局是很好的做法。我正在寻找像MyNodeJsModule.addVarToContext(Model);
我不想在控制器中需要模型的原因是,我需要外部系统加载模型,让外部系统用数据库访问模型替换模型。
答案 0 :(得分:0)
可能你必须像这样更换控制器吗?
module.exports = function(Model) {
return {
onMessage: function(message) {
Model.doSomething();
}
};
}
答案 1 :(得分:0)
不完全确定您需要什么,但您可以将Controller
导出为构造函数,然后将每个实例绑定到特定模型。
所以,在控制器中:
// Constructor
var Controller = function(model){
this._model = model;
}
Controller.prototype.onMessage = function(message) {
this._model.doSomething(message);
};
Controller.prototype.setModel = function(newModel){
this._model = newModel;
}
exports.Controller = Controller;
然后(外部):
var ModelController = require('./controller').Controller;
var modelController1 = new ModelController(model1);
var modelController2 = new ModelController(model2);
modelController1.setModel(model2);
modelController2.setModel(model1);