2016-09-12 11 views
0

こんにちは私はこのようなNode.jsアプリケーションを構築しようとしています。私のapp.jsファイル内のコードは次のとおりです。私のemployeeEmitter.jsでNode.jsイベントハンドラが動作しません

var _ = require('underscore'); 
var employee = require('./employeeEmitter'); 
var EventEmitter = require('events').EventEmitter; 
var emitter = new EventEmitter(); 
var inherits = require('util').inherits; 
var data = [ 
    {id:1, firstName: 'John', lastName: 'Smith'}, 
    {id:2, firstName: 'Jane', lastName: 'Smith'}, 
    {id:3, firstName: 'John', lastName: 'Doe'} 
]; 
inherits(employee.EmployeeEmitter, EventEmitter); 
var newEmployeeEmitter = new employee.EmployeeEmitter(data); 
newEmployeeEmitter.on('lookupById',function(){newEmployeeEmitter.lookupById(newEmployeeEmitter.data,1)}); 
employee.EmployeeEmitter.prototype.test= function() { 
     this.emit('lookupById'); 
} 
console.log(newEmployeeEmitter.test); 

ファイル:

var _ = require('underscore'); 
var EventEmitter = require('events').EventEmitter; 
module.exports = { 
    EmployeeEmitter: function (args) { 
     this.data = args; 
     EventEmitter.call(this); 
    }, 
    lookupById : function(data,id){ 
     var foundId = _.where(data,{id:id}); 
     return foundId[0]; 
    }, 
    lookupByLastName : function(data,lastName) { 
     return _.where(data,{lastName: lastName}); 
    }, 
    addEmployee: function (data, firstName, lastName) { 
     // obtain next id 
     var newId = function (data) { 
      var id = _.max(data, function (data) { 
       return data.id; 
      }); 
      return id.id + 1; 
     } 
     // return new data (old data + new object, but without mutation of initial object) 
     data.push({id:newId(data), firstName: firstName, lastName: lastName }); 
     return data; 
    } 
} 

私はapp.jsを実行すると、コンソールウィンドウで出力する必要があります願っています

{id:2、firstName: 'Jane'、lastName: 'Smith'}

[機能]が表示されます。私は何が起こるか分からない。誰でも助けてくれますか? ありがとうございました!

答えて

-1

あなたは実際にテスト関数を呼び出さなかったので、イベントを出すときに何も返されません。もっとこのような

何かが動作することがあります。

var _ = require('underscore'); 
var employee = require('./employeeEmitter'); 
var EventEmitter = require('events').EventEmitter; 
var emitter = new EventEmitter(); 
var inherits = require('util').inherits; 
var data = [ 
    {id:1, firstName: 'John', lastName: 'Smith'}, 
    {id:2, firstName: 'Jane', lastName: 'Smith'}, 
    {id:3, firstName: 'John', lastName: 'Doe'} 
]; 
inherits(employee.EmployeeEmitter, EventEmitter); 
var newEmployeeEmitter = new employee.EmployeeEmitter(data); 
newEmployeeEmitter.on('lookupById',function(){console.log(newEmployeeEmitter.lookupById(newEmployeeEmitter.data,1));}); 
employee.EmployeeEmitter.prototype.test= function() { 
     this.emit('lookupById'); 
} 
newEmployeeEmitter.test(); 
+0

はあなたに感謝します。私はあなたのコードに変更しました。最後の行はnewEmployeeEmitter.test();しかし、それは私に別のエラーを与える:TypeError:newEmployeeEmitter.lookupByIdは関数ではない –

関連する問題