2016-12-28 14 views
0

JS LibraryをParse Serverと共に使用しており、ログインに成功すると別のページに移動する際に問題が発生しています。解決済みのPromiseでNavController.setRootを使用しているIonic2

この機能を使用すると、this.navCtrl.setRoot(TemplatesPage);は私のアプリでは何もしません。

私のフルコードは以下の通りです。私はsetRootを試してみる前に、成功機能が呼び出されていることを確認してから、popを試しました。

import { Component } from '@angular/core'; 
import { NavController, AlertController} from 'ionic-angular'; 
import { User } from '../../models/user-model'; 
import { SignupPage } from '../signup/signup'; 
import { TemplatesPage } from '../templates/templates'; 
import Parse from 'parse'; 

@Component({ 
    selector: 'login', 
    templateUrl: 'login.html' 
}) 
export class LoginPage { 

    user : User = { 
    username : '', 
    password: '' 
    } 

    constructor(public navCtrl: NavController, public alertCtrl: AlertController) { 

    } 

    login() { 

    Parse.User.logIn(this.user.username, this.user.password).then(function(user) { 

     console.log('Success' + user); 

     this.navCtrl.setRoot(TemplatesPage); 

    }, function(err) { 

     this.alertCtrl 
     .create({title: "Error", message: err.text(), buttons: [{ 
     text: 'OK', 
     }]}) 
     .present(); 

    }) 
    } 

    goToTemplatePage() { 
    this.navCtrl.push(TemplatesPage); 
    } 

    gotToSignup() { 
    this.navCtrl.push(SignupPage); 
    } 

} 

Console showing success and no error

+0

コンソールには何かがありますか? –

+0

@SurajRao私は成功したXHRをサーバに、console.log()を成功関数から取得します。 – Taylorsuk

+0

setRootのエラーはありますか? –

答えて

2

機能(ユーザ)の内部で使用される、これはloginPageを参照しないであろう。それはあなたの機能を指します。矢印の機能は動作が異なり、thisで問題を解決します。答えhereは、矢印機能をいつ使用するかを示します。 これを試して、矢印の機能をキャッチしてください:

1

誰かが、なぜ私は=>.thenを交換し、それが動作コメンターにしかし感謝を知っているかもしれません。以下

完了関数:

Parse.User.logIn(this.user.username, this.user.password).then(user => { 
    console.log('Success' + user); 
    this.navCtrl.setRoot(TemplatesPage); 

}, err => { 
    console.log('error called') 
    this.alertCtrl 
    .create({title: "Error", message: err.text(), buttons: [{ 
    text: 'OK', 
    }]}) 
    .present(); 
}) 
+0

理由は文脈のためです。 'user => {// ...}'を使用している場合でも、コンポーネントのプロパティにアクセスすることができ、したがって 'this.navCtrl ... 'にアクセスすることができます。そうしなければ、コンポーネントのプロパティは'これはコンポーネントとは異なるものを指しています。 – sebaferreras

関連する問題