0

이벤트 목록에 대한 사용자 지정 이벤트를 만듭니다. 내가 파일에 이러한 이벤트 같은 (event.js)이 있습니다Backbone.js : 매개 변수를 이벤트 콜백 함수에 연결

define(function(require, exports, module) { 
module.exports = { 

    'event1': ['test1','data1'], 
    'event2': ['test2','data2'] 
    }; 
}); 

나는이 각 이벤트에 대한 이벤트 트리거를 만드는 오전을

createTriggers: function(Events){ //Events = require(event.js); 
     _.defer(function(){ 
     _.each(Events,function(data,event){ 
      var events = function() { console.log("Data is "+this.data)}; 
      events = _.bind(events,data); 
      targ.events.bind(event,events); //targ is the Backbone event object 
     }); 
     }); 
    } 

하지만 난 이벤트 중 하나를 트리거 할 때 :

this.trigger("event1"); 

데이터가 정의되지 않았으므로 O/p가 표시됩니다. '['test1 ','data1 ']'값을 가져 오지 않는 이유는 무엇입니까?

답변

3

고려하면이 두 라인 :

console.log("Data is " + ['test1','data1'].data);

당신은 아마 원하는 :이 시점에서 data는 배열 (['test1','data1']), 코드이 수행이라고 가정

var events = function() { console.log("Data is "+this.data)}; 
events = _.bind(events,data); 

:

var events = function() { console.log("Data is "+this)}; 
events = _.bind(events,data); 

또는

var events = function() { console.log("Data is "+this.data)}; 
events = _.bind(events,{data: data}); 

자세한 예는 밑줄 바인드 documentation 참조.