2016-05-09 16 views
1

Я пытаюсь перейти на страницу, щелкнув маркер карты Google. Я могу сделать это за пределами внутренней функции (только внутри функции initializeMap), просто имея проблемы с ее выполнением во внутренней функции.Ионный 2: Невозможно перейти от внутренней функции

Это мой конструктор:

static get parameters() { 
    return [[NavController],[Platform]]; 
    } 

    constructor(navController, platform, app) { 
    this.navController = navController; 
    this.platform = platform; 
    this.app = app; 

    this.map = null; 
    this.markers = []; 

    platform.ready().then(() => { 
    this.initializeMap(); 
    }); 
    } 

Внутри моего метода initializeMap содержит метод populateLocks:

function populateLocks(auth,unauth,map){ 

for (var k in auth) { 
    (function (id) { 
     var auth = new google.maps.Marker({ 
      icon: authImage, 
      map: map, 
      position: authLocks[id].latLng 
     }); 
     google.maps.event.addListener(auth, 'click', function() { 
     //alert(auth[id].id); 
     this.navController.push(SettingsPage); 
      }); 
    }) 
    (k) 
    } 

Использование this.navController или NavController бросает мне ошибку вроде:

для этого. navController.push

enter image description here

для navController.push

enter image description here

ответ

2

Либо использовать () => вместо function()

Дополнительная информация: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/Arrow_functions

или использовать var self = this; вне функции и относятся к self.navController вместо this.navController как так:

var self = this; 
google.maps.event.addListener(auth, 'click', function() { 
    //alert(auth[id].id); 
    self.navController.push(SettingsPage); 
}); 
Смежные вопросы