Какие аргументы передаются обработчику, привязанному к событию изменения Backbone.Model?

Кажется, я не могу найти никакой документации для этого, и игра с кодом не помогла мне понять это полностью.

У меня есть модель Backbone, и в моем я привязываю обработчик к событию изменения модели:

var myModel = new ModelA();

var myView = new ViewA({
  model: myModel
})

//in my view I have
this.listenTo(this.model, "change", this.handleChange);

Может кто-нибудь объяснить мне, какие аргументы передаются в this.handleChange? Я вижу, что есть 2 аргумента: модель и значение, но какие именно?

Что происходит, когда я привязываюсь к определенному атрибуту, например:

this.listenTo(this.model, "change:attr", this.handleChange);

Когда я удаляю атрибут из модели с помощью myModel.unset("attr");, какие значения передаются в handleChange? Я вижу, что в некоторых случаях значение не определено, а иногда имеет 1 атрибут unset = true.

Любая помощь или указание на соответствующую документацию будут оценены.


person elanh    schedule 26.06.2013    source источник


Ответы (1)


Из кода:

Событие change:attr:

this.trigger('change:' + changes[i], this, current[changes[i]], options);

Событие change:

this.trigger('change', this, options);

Итак, в первом случае аргументами являются: модель, значение и используемые параметры (как внешние, так и внутренние параметры (например, unset: true для вашего вызова unset)). Во втором случае, поскольку это не касается конкретного атрибута, аргументами являются: модель и параметры.

person Loamhoof    schedule 26.06.2013
comment
Я так понимаю, в первом случае с атрибутом я получаю новое значение этого атрибута (т.е. значение после изменения)? И если я отключил этот атрибут, я получу: модель, неопределенность и любые параметры (например, unset:true)? - person elanh; 27.06.2013
comment
Какие внутренние и внешние параметры передаются? Как они решаются? - person elanh; 27.06.2013
comment
@elanh к вашему первому комментарию: должно быть, да; к вашему второму: внешние - это то, что вы выбрали, внутренние - это те, которые используются по умолчанию (см. поведение методов по умолчанию), а также некоторые, которые необходимы для внутренних механизмов (например, флаг unset, потому что unset использует set на самом деле). - person Loamhoof; 27.06.2013