Мне сложно понять, почему это так сложно, поэтому я подозреваю, что делаю что-то очень не так. Скажем, у меня есть два контроллера, которые выглядят примерно так. Они почти клоны в отношении конечных точек, но не работает - вроде реализаций интерфейсаПодписки подписчиков на Node.js на нескольких контроллерах
(function(someController){
//some require statements
var importantEvent = require("../Connectors/SaveEvents");
someController.init = function(app){
//app.get, app.post, etc etc etc
app.post('/saveThat', function(req, res){
//do some stuff
importantEvent.Saved({ from: "someController", data: stuff });
});
}
importantEvent.on('Saved', function(data){
//let this guy know it happened then do some stuff
})
})(module.exports);
Ok? ОК. Мое событие эмиттер вещь, которая не работает, и я подозреваю, что это очень неправильно выглядит, как это ... (SaveEvents.js)
(function(ImportantEvent){
var util = require('util');
var eventEmitter = require('events').EventEmitter;
eventEmitter.call(ImportantEvent); //??? is this needed?
ImportantEvent.Saved = function(origin, dataPayload) {
//maybe do some stuff to the data
var self = this;
self.emit('Saved', { from: origin, data: dataPayload });
};
util.inherits(OAuthEvents, eventEmitter);
})(module.exports);
, когда я использую хрюкать, я получаю не-го
c:\projects\srsly\node\someController.js:21
importantEvent.on('Saved', function(data){
^
TypeError: Object #<Object> has no method 'on'
Понял, почему и как лучше это делать?