2014-11-07 3 views
0

Backbone.js에서 컬렉션에 맞춤 이벤트 을 발생시키고 싶지만 원래의 변경된 ID (또는 임의의 데이터)를 전달하는 데 어려움이 있습니다. 모델을 이벤트 리스너에게 전달합니다.Backbone.js 컬렉션에서 맞춤 이벤트 제기 및 데이터 전달

var CarCollection = Backbone.Collection.extend({ 
    model: Car, 
    url: '/api/cars/', 

    parse: function (response, options) { 
     return response; 
    }, 

    initialize: function() { 
     // if the car's 'Speed' changes, trigger the event 
     this.on('change:Speed', this.onSpeedChanged, this); 
    }, 

    onSpeedChanged: function(car_id) { 
     // QUESTION: how to get 'car_id' here? 
     this.trigger('SpeedChanged', car_id); 
    } 
}); 

지금이 날 같은 것을 수행 할 수 있습니다 :

은 간단히 말해, 다음 샘플은 호텔 내 모델 '속도'변경 이벤트를 때마다 시작

var cars = new CarCollection(); 

cars.on("SpeedChanged", function (car_id) { 
    console.log("This also works!"); 
    // QUESTION: how to get 'car_id' here (= undefined, of course)? 
}); 

주를이 이 모든 것이 작동하지만 질문은 변경된 모델에서 car_id을 얻고이를 호출자/수신기에 전달하는 방법입니까?

+1

을,'car_id'은 변화에서 오는 모델의, 정의되지 않습니다 : http://jsfiddle.net/nikoshr/ d2La14g7/ – nikoshr

답변

1

AFAIU, 변경된 모델의 car_id 특성을 사용자 지정 이벤트로 전달하려고합니다. 당신은 필요한 속성의 현재 값을 얻을 수 get 방법을 사용할 수 있습니다 : 당신의 예에서

var CarCollection = Backbone.Collection.extend({ 
    ... 
    onSpeedChanged: function(model) { 
     // model - changed model 
     this.trigger('SpeedChanged', model.get('car_id')); 
    } 
}); 
+0

바로이 것이 었습니다. 감사! –

+0

@Moriarty 문제가 해결되면이 대답을 "수락"으로 선택할 수 있습니다. – hindmost

+0

물론 걱정하지 마십시오. 나는 아직 끝나지 않았다. –

관련 문제