Ионная листовка, запускающая функцию не найдена - PullRequest
0 голосов
/ 13 сентября 2018

В настоящее время я работаю над проектом ionic 3 с листовкой.Я хочу вызвать функцию после moveend (или dragend), но она не будет преобразовывать функцию, которую я запускаю.Он говорит, что он не объявлен.

Ошибка, которую я получаю: 'this.functiontoload не является функцией'.

Надеюсь, кто-то сможет помочь.

loadmap(){
    this.map = L.map('map', {rotate: true, touchRotate: true, zoomControl: false}).fitWorld();
    L.tileLayer('https://maps.tilehosting.com/styles/streets/{z}/{x}/{y}.png?key=XXXX', {
        attribution: 'Projectname',
        crossOrigin: true
    }).addTo(this.map);


    this.map.locate({setView: true, maxZoom: 20});

    this.userMarker = L.marker([51.5, -0.09], {icon: this.userMarkerIcon}).addTo(this.map);

    let watch = this.geolocation.watchPosition();
    watch.subscribe((data) => {
        let latitude = data.coords.latitude;
        let longitude = data.coords.longitude;

        var newPosition = L.latLng(latitude, longitude);

        this.userMarker.setLatLng(newPosition);
    });


    this.map.on('moveend', function() {
        this.functiontoload();
    });

}

functiontoload() {
....
}

1 Ответ

0 голосов
/ 30 сентября 2018

Это как раз об «этом».смысл в вашей функции обратного вызова, и это не о листовке.Вы можете использовать лямбда-функцию или передать «this» своей функции, чтобы вы могли изменить свой код на:

 this.map.on('moveend', ()=> {
    this.functiontoload();
});

Мотивация для лямбды:

- Вам не нужнопродолжайте вводить функцию

- она ​​лексически отражает значение этого

- она ​​лексически отражает значение аргументов

...