Правильный способ привязки нескольких изменений атрибутов к модели Backbone.js

Единственное решение - сделать локальную копию и ссылку в пределах лямбда. Все переменные в C # (и VB.Net) при доступе в закрытии будут иметь семантику ссылок и семантику копирования / значения. Невозможно изменить это поведение на любом языке.

Примечание: на самом деле это не компиляция в качестве ссылки. Компилятор подталкивает переменную в класс замыкания и перенаправляет обращения «i» в поле «i» внутри данного класса замыкания. Часто легче думать об этом как о контрольной семантике.

23
задан Thaddeus Albers 8 September 2013 в 21:54
поделиться

2 ответа

Я не знаю, существует ли такая функция «массового связывания» (вы могли бы открыть для нее запрос функции, это кажется полезным).

Вы можете связать их отдельно:

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);
  }
});
24
ответ дан chris Frisina 8 September 2013 в 21:54
поделиться

Начиная с Backbone.js 0.9.0, функция bind() (которая была переименована в в on() ) поддерживает список событий, разделенных пробелом:

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

// equivalent to

model.bind("change:title change:author", ...)
80
ответ дан Rob Hruska 8 September 2013 в 21:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: