Ionic 2:如何在 Controller 中调用 Provider 函数 class
Ionic 2: How to call Provider function in Controller class
我只在我的机器上创建了新的 Cordova 插件。然后我将它添加到我的项目中。当我调用该插件时它工作正常。现在,我尝试为我的插件创建一个结构化调用程序。我为它创建了一个 Provider,但问题是我不知道如何从我的 Controller class 调用我的插件函数。下面是我的示例代码。
提供商:我的-service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
declare let myPlugin: any;
@Injectable()
export class MyService {
constructor(public http: Http) {
console.log('Hello MyService Provider');
}
public myFunction() {
myPlugin.myPluginFunction(
(data) => {
return data;
},
(err) => {
return err;
});
}
}
页数:我的-page.ts
import { Component } from '@angular/core';
import { NavController, ViewController } from 'ionic-angular';
import { MyService } from '../../providers/my-service';
@Component({
selector: 'page-my-page-ionic',
templateUrl: 'hello-ionic.html'
})
export class MyPage {
constructor(private viewCtrl: ViewController, private myService: MyService) {}
ionViewWillEnter() {
//I tried to call like this
this.myService.myFunction().subscribe(
data => {
alert("success");
},
error => {
alert("error");
});
}
}
它 returns 我这个错误 - Property 'subscribe' does not exist on type 'void'.
我不知道如何调用该函数,因为我的提供商 returns 我 success
或 error
.
我认为由于您的 myFunction()
没有 return 任何可观察到的内容,因此您无法订阅它。它直接 returns 数据。
在这种情况下你可以这样使用它:
var data = this.myService.myFunction();
console.log("Data from plugin is :", data);
如果您想将其用作 Observable,return 像这样的新 Observable:
public myFunction() {
return Observable.create(observer => {
myPlugin.myPluginFunction(
(data) => {
observer.next(data);
},
(err) => {
observer.next(data);
});
},
(err) => {
observer.error(err);
});
}
我只在我的机器上创建了新的 Cordova 插件。然后我将它添加到我的项目中。当我调用该插件时它工作正常。现在,我尝试为我的插件创建一个结构化调用程序。我为它创建了一个 Provider,但问题是我不知道如何从我的 Controller class 调用我的插件函数。下面是我的示例代码。
提供商:我的-service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
declare let myPlugin: any;
@Injectable()
export class MyService {
constructor(public http: Http) {
console.log('Hello MyService Provider');
}
public myFunction() {
myPlugin.myPluginFunction(
(data) => {
return data;
},
(err) => {
return err;
});
}
}
页数:我的-page.ts
import { Component } from '@angular/core';
import { NavController, ViewController } from 'ionic-angular';
import { MyService } from '../../providers/my-service';
@Component({
selector: 'page-my-page-ionic',
templateUrl: 'hello-ionic.html'
})
export class MyPage {
constructor(private viewCtrl: ViewController, private myService: MyService) {}
ionViewWillEnter() {
//I tried to call like this
this.myService.myFunction().subscribe(
data => {
alert("success");
},
error => {
alert("error");
});
}
}
它 returns 我这个错误 - Property 'subscribe' does not exist on type 'void'.
我不知道如何调用该函数,因为我的提供商 returns 我 success
或 error
.
我认为由于您的 myFunction()
没有 return 任何可观察到的内容,因此您无法订阅它。它直接 returns 数据。
在这种情况下你可以这样使用它:
var data = this.myService.myFunction();
console.log("Data from plugin is :", data);
如果您想将其用作 Observable,return 像这样的新 Observable:
public myFunction() {
return Observable.create(observer => {
myPlugin.myPluginFunction(
(data) => {
observer.next(data);
},
(err) => {
observer.next(data);
});
},
(err) => {
observer.error(err);
});
}