我在几分钟内创建了一些非常基础和快速的东西,因此很容易重现。
我使用以下方法创建了一个应用
ionic start blank --v2
然后我创建了一个提供者:
ionic g provider FacebookFriends
然后我把这段代码放在我的提供者身上:
import {Injectable, Inject} from 'angular2/core';
import {Http} from 'angular2/http';
/*
Generated class for the FacebookFriends provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class FacebookFriends {
constructor(@Inject(Http) http) {
this.http = http;
this.data = null;
}
load() {
if (this.data) {
// already loaded data
return Promise.resolve(this.data);
}
// don't have the data yet
return new Promise(resolve => {
// We're using Angular Http provider to request the data,
// then on the response it'll map the JSON data to a parsed JS object.
// Next we process the data and resolve the promise with the new data.
this.http.get('path/to/data.json')
.map(res => res.json())
.subscribe(data => {
// we've got back the raw data, now generate the core schedule data
// and save the data for later reference
this.data = data;
resolve(this.data);
});
});
}
}
然后我尝试将其注入app.js:
import {App, Platform} from 'ionic-angular';
import {TabsPage} from './pages/tabs/tabs';
import {FacebookFriends} from './providers/facebook-friends/facebook-friends';
@App({
template: '<ion-nav [root]="rootPage"></ion-nav>',
config: {}, // http://ionicframework.com/docs/v2/api/config/Config/,
providers: [FacebookFriends]
})
export class MyApp {
static get parameters() {
return [[Platform]];
}
constructor(platform, private _facebookFriends) {
this.rootPage = TabsPage;
platform.ready().then(() => {
});
}
}
这就是我所做的一切。当我运行离子服务时,我会遇到很多错误。我知道有一个未知的令牌,它指向@Inject
和@Injectable
个字。我还在private _facebookFriends
行获得了意外的令牌。
此外,如果我尝试向构造函数添加类型,那么我将platform:Platform
和_facebookFriends:FacebookFriends
我也得到了&#39;:&#39;是未知的令牌。
我本质上只是试图从我的app.js调用服务,但它无法正常工作。
答案 0 :(得分:0)
默认情况下,Ionic提供了Http。将参数添加到构造函数就足够了:
if(spinner2.getSelectedItem() == null)
答案 1 :(得分:0)
我认为您需要在FacebookFriends
getter中添加parameters
:
export class MyApp {
static get parameters() {
return [[Platform, FacebookFriends]];
}
(...)
}
getter返回的数组需要匹配构造函数中所需的所有参数。如果您有两个参数,则阵列中需要两个参数。在providers
属性中定义服务仅指定可以注入此服务。要实际注入它,您需要在parameters
getter中定义它。
您还需要为您的服务定义parameters
getter:
@Injectable()
export class FacebookFriends {
static get parameters() {
return [[Http]];
}
constructor(http) {
this.http = http;
this.data = null;
}
(...)
}
您可以注意到,使用ES6,无法在构造函数参数级别使用@Inject
...