5

.on()を使用してバックボーンコレクションに複数のイベントをバインドするときに、バックボーンコレクションでトリガーされるイベントを知るにはどうすればよいですか?明確にするために、次の例を参照してください。(jsFiddleも参照してください:http://jsfiddle.net/PURAU/3/

var Car = Backbone.Model.extend({
    nrOfWheels: 4,
    color: 'red',
    speed: 'slow'
});

var Garage = Backbone.Collection.extend({
    model: Car
});

var myGarage = new Garage(),
    myCar = new Car();

myGarage.on('add change reset', function() {
    // How do I know what event was triggered?
    console.log('add change reset', arguments);
});

myGarage.on("all", function() {
    // In here, the name of the event is the first argument.
    console.log('all', arguments);
});

// Trigger add
myGarage.add(myCar);

// Trigger change
myCar.set('speed', 'fast');

// Trigger reset
myGarage.reset();
4

2 に答える 2

1

イベントごとに特定のアクションが必要な場合、最も順序付けられた方法は、すべてをリッスンすることです。また、何かが変更されたときに全体的な変更リスナーが必要な場合は、リスナー内でそれを呼び出し、自分でイベント名を指定します。

myGarage.on('add', function() {
     yourGlobalFunction(arguments, 'add');
     //specific actions for add
});
myGarage.on('change', function() {
     yourGlobalFunction(arguments, 'change');
     //specific actions for change
});
myGarage.on('reset', function() {
     yourGlobalFunction(arguments, 'reset');
     //specific actions for reset
});

function yourGlobalFunction(prevArguments, eventName){
   log(prevArguments, eventName);
}
于 2012-07-03T16:03:40.853 に答える
0

そのためのメソッドをオーバーライドする必要があります。triggerコードを見てください。

https://github.com/documentcloud/backbone/blob/master/backbone.js#L148

于 2012-07-03T08:22:12.327 に答える