callback jako metodu objektu rubrika: Programování: JavaScript

3 SebastianBusek
položil/-a 19.4.2013
 
upravil/-a 19.4.2013

Dobrý den,

trochu si hraju s javascriptem, resp. snažím se napsat vlastní komponentu pro práci s adresami, a využívám Bing Maps 7.
Ale zasekl v bodě, kdy chci obsloužit kliknutí do mapy a k tomu abychom mohl obsloužit kliknutí do mapy musím definovat handler nad mapou.
Problém je, že bych chtěl aby handler obsloužila metoda objektu vytvořeného pomocí konstrukční funkce.
Jde to?
Díky a příjemný pátek.

edit:

var AddressInformation = function () {
  var clickHandler = undefined;
  ...
  //this.clickHandler = Microsoft.Maps.Events.addHandler(this.map, 'click', ???); // ??? je název handleru
  // edit: tohle je funkční, ale asi by se mi více líbilo obsloužení pomocí metody
  this.selectingHandler = Microsoft.Maps.Events.addHandler(this.map, 'click', function (e) {
    alert('map clicked!');
  }.bind(this));
 
  // tohle ale bohužel házelo chybu: object doesn't support property or method 'bind', což je logické
  // this.selectingHandler = Microsoft.Maps.Events.addHandler(this.map, 'click', this.onMapClick).bind(this);
 
  // ale tohle je funkční verze
  this.selectingHandler = Microsoft.Maps.Events.addHandler(this.map, 'click', onMapClick.bind(this));
  ...
  // private method??
  var onMapClick = function (e) {
    ...
  };
  // nebo public method??
  this.onMapClick = function (e) {
    ...
  };
};
odkaz
3 SebastianBusek
odpověděl/-a 19.4.2013

Supr, vyřešeno.
this.selectingHandler = Microsoft.Maps.Events.addHandler(this.map, 'click', onMapClick.bind(this));

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.