Единственное решение - сделать локальную копию и ссылку в пределах лямбда. Все переменные в C # (и VB.Net) при доступе в закрытии будут иметь семантику ссылок и семантику копирования / значения. Невозможно изменить это поведение на любом языке.
Примечание: на самом деле это не компиляция в качестве ссылки. Компилятор подталкивает переменную в класс замыкания и перенаправляет обращения «i» в поле «i» внутри данного класса замыкания. Часто легче думать об этом как о контрольной семантике.
Я не знаю, существует ли такая функция «массового связывания» (вы могли бы открыть для нее запрос функции, это кажется полезным).
Вы можете связать их отдельно:
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);
}
});
Или вы можете прослушать все изменения (а затем отфильтровать в слушателе):
var Mine = Backbone.Model.extend({
initialize: function() {
var listener = function() { console.log('changed'); };
this.bind("change", listener);
}
});
Начиная с Backbone.js 0.9.0, функция bind()
(которая была переименована в в on()
) поддерживает список событий, разделенных пробелом:
model.on("change:title change:author", ...)
// equivalent to
model.bind("change:title change:author", ...)