Кои аргументи се предават на манипулатора, обвързан със събитие за промяна на 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
Така че, ако разбирам, в първия случай, с атрибут, получавам новата стойност на този атрибут (т.е. стойността след промяната)? И ако съм деактивирал този атрибут, ще получа: модела, undefined и всякакви опции (като unset:true)? - person elanh; 27.06.2013
comment
Какви са вътрешните и външните опции, които се предават? Как се решават? - person elanh; 27.06.2013
comment
@elanh към първия ви коментар: трябва да е така, да; към второто: външните са това, което сте избрали, вътрешните са тези, които се използват по подразбиране (вижте поведението по подразбиране на методите) плюс някои, които са необходими за вътрешните механизми (като unset флага, защото unset използва set in fact). - person Loamhoof; 27.06.2013