Angularjs Ionic 2:存储来自http GET请求的响应
我正在开发一个应用程序,并设置了一个事件提供程序。我正在使用Eventbrite API获取城市中发生的事件池。我在试图弄清楚如何执行get请求并将其存储在变量中时遇到了困难。以下是请求的URL:Angularjs Ionic 2:存储来自http GET请求的响应,angularjs,ionic-framework,get,ionic2,eventbrite,Angularjs,Ionic Framework,Get,Ionic2,Eventbrite,我正在开发一个应用程序,并设置了一个事件提供程序。我正在使用Eventbrite API获取城市中发生的事件池。我在试图弄清楚如何执行get请求并将其存储在变量中时遇到了困难。以下是请求的URL: https://www.eventbriteapi.com/v3/events/search/?location.address=Atlanta&expand=organizer,venue&token={MY_TOKEN} 以下是我目前的提供商: import { Injectab
https://www.eventbriteapi.com/v3/events/search/?location.address=Atlanta&expand=organizer,venue&token={MY_TOKEN}
以下是我目前的提供商:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import {NativeStorage} from "ionic-native";
import 'rxjs/add/operator/map';
/*
Generated class for the EventProvider provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class EventProvider {
data:any;
constructor(public http: Http) {
this.data = null;
//console.log('Hello EventProvider Provider');
}
public getCityEvents(city) {
var event = {id: "", name: "", start: "", end: "", latitude: "", longitude: "", venue:""};
NativeStorage.getItem('event')
.then(function (data) {
alert("data: " + JSON.stringify(data));
alert("data id: " + data.id);
event = {
id = data.id,
name = data.name,
start = data.start,
end = data.end,
latitude = data.latitude,
longitude = data.longitude,
venue = data.venue
};
this.http.get("https://www.eventbriteapi.com/v3/events/search/?location.address=Atlanta&expand=organizer,venue&token=VMGQGYQUIO3IKNS75BD4").subscribe( data =>{
console.log(data);
},
error => {
console.log(error)
});
})
}
}
我现在只想将这个get请求的JSON响应存储在一个变量中。有人能提供一些帮助吗?创建函数
getData() {
return this.http.get("https://www.eventbriteapi.com/v3/events/search/?location.address=Atlanta&expand=organizer,venue&token=VMGQGYQUIO3IKNS75BD4")
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
然后订阅
this.getData()
.subscribe(
data => console.log(data);
error => console.log(error));
}
请参阅您从邮递员处获取的作品。在
NativeStorage.getItem('event')中使用箭头函数。然后((数据)=>{…}
,您可以在http
回调中访问实际上下文this
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import {NativeStorage} from "ionic-native";
import 'rxjs/add/operator/map';
/*
Generated class for the EventProvider provider.
See https://angular.io/docs/ts/latest/guide/dependency-injection.html
for more info on providers and Angular 2 DI.
*/
@Injectable()
export class EventProvider {
data:any;
constructor(public http: Http) {
this.data = null;
//console.log('Hello EventProvider Provider');
}
public getCityEvents(city) {
var event = {id: "", name: "", start: "", end: "", latitude: "", longitude: "", venue:""};
NativeStorage.getItem('event')
.then((data) => {
alert("data: " + JSON.stringify(data));
alert("data id: " + data.id);
event = {
id = data.id,
name = data.name,
start = data.start,
end = data.end,
latitude = data.latitude,
longitude = data.longitude,
venue = data.venue
};
this.http.get("https://www.eventbriteapi.com/v3/events/search/?location.address=Atlanta&expand=organizer,venue&token=VMGQGYQUIO3IKNS75BD4").subscribe( data =>{
console.log(data);
//variable assignment
this.data = data;
},
error => {
console.log(error)
});
})
}
this.data=event
应该可以…但是您需要使用箭头函数,(params)=>表达式或块
,而不是函数
表达式。如果您没有可用的transpiler,请将其别名为闭包外部的临时变量,并在闭包内部引用它。此引用在函数
内部动态范围内。抱歉,我不太明白。我正在收到响应我想在浏览器中键入url,但我不确定我所拥有的是否真的起作用。我定义的事件变量包含我想从JSON中获取的最终数据字段,但JSON响应也有许多其他字段。你能用我发布的代码详细说明你的解决方案吗?只需在ajai Jothi的ans中尝试这种方法wer或在我的评论中,这是完全错误的,通过传递未绑定的方法,你并不能解决OP中的问题,这与这个的词法闭包有关。相反,你将错误传播到一个建议的模式中。同样,传递这样的方法是一个绝对糟糕的编码实践。模仿当他们错了的时候,角度医生是毫无意义的