【问题标题】:Ionic 2: Unable to navigate from inner functionIonic 2:无法从内部功能导航
【发布时间】:2016-05-09 02:59:06
【问题描述】:

点击谷歌地图标记后,我正在尝试导航到页面。我可以在内部函数之外执行此操作(仅在 initializeMap 函数内部),只是在内部函数中执行此操作时遇到问题。

这是我的构造函数:

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 会引发如下错误:

对于 this.navController.push

对于 navController.push

【问题讨论】:

    标签: javascript ionic-framework angular ionic2


    【解决方案1】:

    要么使用() => 而不是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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-16
      • 2016-12-31
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多