2011-11-25 13 views
22

Aşağıdaki özniteliğim var, burada "attribute_1" tek bir öznitelikte değişiklik yapıyorum.Backbone.js modeline birden çok öznitelik değişikliğinin doğru bir şekilde bağlanması yolu

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    this.bind("change:attribute_1", function() { 
     console.log('changed!'); 
    }); 
    } 
}); 

İki özniteliği nasıl bağlarım? Bunu

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    this.bind("change:attribute_1 change:attribute_2", function() { 
     console.log('changed!'); 
    }); 
    } 
}); 

cevap

24

Ben böyle bir "toplu bağlamak" fonksiyonu varsa (bunun için bir özellik isteği açabilir bilmiyorum:

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    this.bind("change:attribute_1, change:attribute_2", function() { 
     console.log('changed!'); 
    }); 
    } 
}); 

Nor yapar: Bu işe yaramazsa yararlı görünüyor).

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    var listener = function() { console.log('changed'); }; 
    this.bind("change:attribute_1", listener); 
    this.bind("change:attribute_2", listener); 
    } 
}); 

Yoksa tüm değişiklikler dinlemek (ve daha sonra dinleyici de filtre) olabilir:

Sen bunları ayrı ayrı bağlayabilir

var Mine = Backbone.Model.extend({ 
    initialize: function() { 
    var listener = function() { console.log('changed'); }; 
    this.bind("change", listener); 
    } 
}); 
+12

, 'b: (renamed to on() olmuştur) bind() işlevi olayların bir boşlukla sınırlandırılmış listesini destekler ind() 'zincirlenebilir:' this.bind (...). bind (...) '. –

+1

Ortak bir dinleyici kullanıyorsanız, hangi özniteliğin değiştiğini nasıl kontrol edersiniz? –

79

backbone.js 0.9.0 itibariyle Ayrıca

model.on("change:title change:author", ...) 

// equivalent to 

model.bind("change:title change:author", ...) 
+2

Şimdi bu, geri arama başına bir veya birden çok kez mi çağırıyor? – Sukima

+4

@Sukima Değişen özellik başına bir kez çağırır. Başlık değişirse, bir kez ateşlenir. Yazar değişirse, bir kez ateşlenir. Hem başlık hem de yazar değişirse, ilk kez bir başlık ve bir kez yazar için. –

+2

Bu harita listenTo sözdizimini nasıl? – backdesk

İlgili konular