Function Ionic 2-从服务中的控制器调用函数
我有一个爱奥尼亚2项目,有一个home.html/home.ts页面和一个service connectivity-service.ts页面。服务应该检查用户是在线还是离线。除此之外,在服务中还添加了一些侦听器,用于监视用户是否脱机或联机。使用该服务的每个页面都应该为该服务提供函数,该服务应该被称为onOnline/onOffline 以下是我的connectivity-service.ts代码:Function Ionic 2-从服务中的控制器调用函数,function,service,ionic2,Function,Service,Ionic2,我有一个爱奥尼亚2项目,有一个home.html/home.ts页面和一个service connectivity-service.ts页面。服务应该检查用户是在线还是离线。除此之外,在服务中还添加了一些侦听器,用于监视用户是否脱机或联机。使用该服务的每个页面都应该为该服务提供函数,该服务应该被称为onOnline/onOffline 以下是我的connectivity-service.ts代码: import {Injectable} from '@angular/core'; import
import {Injectable} from '@angular/core';
import { Network } from 'ionic-native';
import { Platform } from 'ionic-angular';
declare var Connection;
@Injectable()
export class ConnectivityService {
onDevice: boolean;
onOnlineFunction: any;
onOfflineFunction: any;
constructor(public platform: Platform) {
this.onDevice = this.platform.is('cordova');
}
/**
* Initialise the connectivity service
* @param onOnlineFunction
* @param onOfflineFunction
*/
init(onOnlineFunction = null, onOfflineFunction = null){
this.onOnlineFunction = onOnlineFunction;
this.onOfflineFunction = onOfflineFunction;
if(this.isOnline()){
if(this.onOnlineFunction){
this.onOnlineFunction();
}
}
else{
if(this.onOfflineFunction){
this.onOfflineFunction();
}
}
this.addConnectivityListeners();
}
/**
* Check if the user is online
* @return {boolean}
*/
isOnline(): boolean {
// Check if the user is on a device or on browser
if(this.onDevice && Network.type){
return Network.type !== Connection.NONE;
}
else{
return navigator.onLine;
}
}
/**
* Watch online oberservable to check if the user comes online
* @return {Observable<any>}
*/
watchOnline(){
return Network.onConnect();
}
/**
* Watch offline oberservable to check if the user goes offline
* @return {Observable<any>}
*/
watchOffline() {
return Network.onDisconnect();
}
/**
* Add connectivity listeners to permanently check if the user goes on- or offline
*/
addConnectivityListeners(): void {
let onOnline = () => {
if(this.onOnlineFunction){
this.onOnlineFunction();
}
};
let onOffline = () => {
if(this.onOfflineFunction){
this.onOfflineFunction();
}
};
this.watchOnline().subscribe(() => {
onOnline();
});
this.watchOffline().subscribe(() => {
onOffline();
});
if(!this.onDevice){
document.addEventListener('online', onOnline, false);
document.addEventListener('offline', onOffline, false);
}
}
}
现在的问题是服务调用这个函数就像它是服务的一部分一样。因此,如果此函数中使用的服务未导入到连接服务中,则连接服务不起作用。除此之外,home.ts变量的分配不起作用。是否有一种方法可以像在home.ts中调用一样调用connectivity-service.ts中的给定函数?您需要使用该函数以确保此
对象保持组件的功能
this.platform.ready().then(() => {
this.connectivity.init(this.loadData.bind(this));//here
});
this.platform.ready().then(() => {
this.connectivity.init(this.loadData.bind(this));//here
});