Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ionic 2中注册连接事件_Javascript_Google Maps_Events_Ionic Framework_Ionic2 - Fatal编程技术网

Javascript 在ionic 2中注册连接事件

Javascript 在ionic 2中注册连接事件,javascript,google-maps,events,ionic-framework,ionic2,Javascript,Google Maps,Events,Ionic Framework,Ionic2,我是离子2的新手,我正在尝试创建一个事件,并侦听该事件的更改。如果我的应用程序的网络连接状态发生更改,将触发该事件。我目前正在一个名为Connectivity的提供程序中执行此操作,并在我的根组件中实例化该提供程序。然后在我的一个页面中,我称之为“地图”,它是另一个提供程序,地图使用在连接提供程序中创建的事件检查连接,然后显示地图。问题是,事件似乎没有被触发,而且我的地图也没有生成。这是我的密码 //连接提供程序 @可注射() 导出类连接{ onDevice:布尔值=真; 构造函数(公共平台:

我是离子2的新手,我正在尝试创建一个事件,并侦听该事件的更改。如果我的应用程序的网络连接状态发生更改,将触发该事件。我目前正在一个名为Connectivity的提供程序中执行此操作,并在我的根组件中实例化该提供程序。然后在我的一个页面中,我称之为“地图”,它是另一个提供程序,地图使用在连接提供程序中创建的事件检查连接,然后显示地图。问题是,事件似乎没有被触发,而且我的地图也没有生成。这是我的密码

//连接提供程序
@可注射()
导出类连接{
onDevice:布尔值=真;
构造函数(公共平台:平台,私有事件:事件){
this.onDevice=this.platform.is('cordova');
this.platform.ready()。然后(()=>{
这个.isOnline();
this.watchForNetworkChanges();
})
}
isOnline():void{
if(this.onDevice&&Network.type){
this.events.publish('network:connected',network.type!==Connection.NONE);
}否则{
this.events.publish('network:connected',navigator.onLine);
}
}
watchForNetworkChanges():void{
//监视网络连接
Network.onConnect().subscribe(()=>{
this.events.publish('network:connected',true);
});
Network.onDisconnect().subscribe(()=>{
this.events.publish('network:connected',false);
});
}
}
//我的地图提供商
构造函数(私有事件:事件){}
init(mapElement:any,pleaseConnect:any){
this.mapement=mapement;
this.pleaseConnect=pleaseConnect;
这个.loadGoogleMaps();
}
loadGoogleMaps(){
this.events.subscribe('网络:已连接',(状态)=>{
让连接=状态
如果(!已连接){
这个。disableMap();
}
否则{
this.initMap().then(函数(){
这个.enableMap();
})
}
});
}
//home.page.ts
@ViewChild('map')mapElement:ElementRef;
@ViewChild('pleaseConnect')pleaseConnect:ElementRef;
构造器(公共平台:平台,公共地图:谷歌地图){
this.showList=false;
this.initializeItems();
这是.homePageStart();
}
主页开始(){
this.platform.ready()。然后(()=>{
this.maps.init(this.mapeElement.nativeElement,this.pleaseConnect.nativeElement);
});

}
我认为您的问题在于
这个
这里:

 this.initMap().then(function () {
          this.enableMap();
        })
由于您使用的是函数,
this
指向函数对象,而不是类。尝试使用
()=>{}
,它具有词法作用域,并获取类的
此对象

 this.initMap().then(()=> {
      this.enableMap();
    })

的文档您是否在其他任何地方订阅了“网络:已连接”?目前我只在我的地图提供商中订阅了“网络:已连接”。您是否在订阅中登录?我在订阅地图之前和中添加了console.log。我在订阅之前看到日志,但在订阅中看不到日志。我还在事件发布之前添加了一个日志,该日志已注销。我也改为使用箭头函数。我还是没看到我的地图。如果我删除连接检查,我的地图会显示。
let connected=status[0]==true当您直接发送true或false时,为什么要检查状态[0]
?它应该是
let connected=status我之前发送了一个不同的值,但忘记了删除该行。我没有发现语法方面的任何其他问题。可能是多个发布操作发送的是矛盾的?我想说试着调试一下。谢谢!!这是检查连接的更好方法吗?或者,如果我能让它发挥作用的话,我所尝试的方式还可以吗?