Angularjs Ionic 2:存储来自http GET请求的响应

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

我正在开发一个应用程序,并设置了一个事件提供程序。我正在使用Eventbrite API获取城市中发生的事件池。我在试图弄清楚如何执行get请求并将其存储在变量中时遇到了困难。以下是请求的URL:

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中的问题,这与
这个
的词法闭包有关。相反,你将错误传播到一个建议的模式中。同样,传递这样的方法是一个绝对糟糕的编码实践。模仿当他们错了的时候,角度医生是毫无意义的