2016-03-02 6 views
0

Привет Я пытаюсь сделать простой запрос HTTP GET, но не может заставить его работать в ионном v2 Beta ...Ионные 2 HTTP запрос не работает - Угловая 2

вот мой app.js :

import {App, Platform} from 'ionic-angular'; 
import {TabsPage} from './pages/tabs/tabs'; 
import {HTTP_BINDINGS} from 'angular2/http'; 


@App({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>', 
    providers: [HTTP_BINDINGS], 
    config: {} // http://ionicframework.com/docs/v2/api/config/Config/ 
}) 
export class MyApp { 
    static get parameters() { 
    return [[Platform]]; 
    } 

    constructor(platform) { 
    this.rootPage = TabsPage; 

    platform.ready().then(() => { 

    }); 
    } 
} 

и это мой page1.js:

import {Page} from 'ionic-angular'; 
import {Http} from 'angular2/http'; 


@Page({ 
    templateUrl: 'build/pages/page1/page1.html' 
}) 

export class Page1 { 
    constructor(http:Http) { 

     this.mget = http.get("https://httpbin.org/ip") 
     .subscribe(data => { 
      var alert = Alert.create({ 
       title: "Your IP Address", 
       subTitle: data.json().origin, 
       buttons: ["close"] 
      }); 
      this.nav.present(alert); 
     }, error => { 
      console.log(JSON.stringify(error.json())); 
     }); 
    } 
} 

при добавлении HTTP: Http конструктору -> конструктор (HTTP: Http) все приложение становится пустым в браузере ... И я получаю сообщение об ошибке в консоли:

Ошибка: Не удается найти модуль»../page1/page1"

Я также попытался это в Page1.js:

export class Page1 { 
    constructor() { 

    } 

    makeGetRequest() { 
     this.http.get("https://httpbin.org/ip") 
     .subscribe(data => { 
      var alert = Alert.create({ 
       title: "Your IP Address", 
       subTitle: data.json().origin, 
       buttons: ["close"] 
      }); 
      this.nav.present(alert); 
     }, error => { 
      console.log(JSON.stringify(error.json())); 
      console.log('yolo') 
      alert('hello'); 
     }); 
    } 
} 

, а затем вызвать makeGetRequest() на (щелчок) в page1.html но возвращает эти исключения:

ИСКЛЮЧЕНИЕ: Ошибка при оценке «нажмите»

ORIGINAL ИСКЛЮЧЕНИЕ: TypeError: this.http неопределен

, пожалуйста, помогите! :)

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-

ЭТО ЭТОРЕШЕНИЕ:

page1.js:

import {Page} from 'ionic-angular'; 
import {Http} from 'angular2/http'; 

@Page({ 
    templateUrl: 'build/pages/page1/page1.html' 
}) 

export class Page1 { 
    static get parameters(){ 
     return [Http]; 
     } 
    constructor(http) { 
     this.http = http; 

     this.mget = this.http.get("https://httpbin.org/ip") 
     .subscribe(data => { 
      console.log(data); 
     }, error => { 
      console.log('faild'); 
     }); 
    } 
} 

app.js:

import {App, Platform} from 'ionic-angular'; 
import {TabsPage} from './pages/tabs/tabs'; 
import { HTTP_PROVIDERS } from 'angular2/http'; 


@App({ 
    template: '<ion-nav [root]="rootPage"></ion-nav>', 
    providers: [HTTP_PROVIDERS], 
    config: {} // http://ionicframework.com/docs/v2/api/config/Config/ 
}) 
export class MyApp { 
    static get parameters() { 
    return [[Platform]]; 
    } 

    constructor(platform) { 
    this.rootPage = TabsPage; 

    platform.ready().then(() => { 

    }); 
    } 
} 

ответ

1

Пожалуйста, попробуйте это

export class Page1 { 
    static get parameters(){ 
     return [Http]; 
     } 
    constructor(http) { 
     this.http = http; 
     this.mget = this.http.get("https://httpbin.org/ip") 
     .subscribe(data => { 
      var alert = Alert.create({ 
       title: "Your IP Address", 
       subTitle: data.json().origin, 
       buttons: ["close"] 
      }); 
      this.nav.present(alert); 
     }, error => { 
      console.log(JSON.stringify(error.json())); 
     }); 
    } 
} 

Я бы порекомендовал вам написать запрос оздействуй отдельную услугу и введите ее на свою страницу.

также взглянуть на это - http://tphangout.com/?p=113

Подробных и простые инструкции приведены здесь для создания простого запроса GET из ионных 2 приложения.

+0

это сработало, thx! – Christer

0

Я считаю, что вам нужно import { HTTP_PROVIDERS } from 'angular2/http'; в вашем app.js вместо HTTP_BINDINGS и изменить providers: [HTTP_BINDINGS] к providers: [HTTP_PROVIDERS]

См Angular2 docs

+0

все еще возникает ошибка: ORIGINAL EXCEPTION: TypeError: this.http is undefined – Christer

+0

Попробуйте сделать http private: 'constructor (private http: Http) {...' – jboothe

+0

Вы нарисовали' 'на вашей индексной странице? – jboothe

Смежные вопросы