Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ionic2:Can';我不能从A页浏览到B页,但我可以从A页浏览到C页,然后浏览到B页_Javascript_Angular_Ionic Framework_Ionic2 - Fatal编程技术网

Javascript Ionic2:Can';我不能从A页浏览到B页,但我可以从A页浏览到C页,然后浏览到B页

Javascript Ionic2:Can';我不能从A页浏览到B页,但我可以从A页浏览到C页,然后浏览到B页,javascript,angular,ionic-framework,ionic2,Javascript,Angular,Ionic Framework,Ionic2,第A页=登录 第B页=欢迎 C页=列表 违规组件=DefaultPopover 因此,基本上我无法从A页导航到B页,除非我从欢迎页面中删除一个组件或从DefaultPopover中注释掉注销功能 同样的组件在C页上运行良好。如果我从A页->C页导航,那么我可以导航到B页。在DefaultPopover中,如果我将注销更改为指向WelcomeController,则一切正常。我不知道发生了什么事 我在下面包括了控制器和我的离子信息输出 登录控制器 import {ToastController,

第A页=登录

第B页=欢迎

C页=列表

违规组件=DefaultPopover

因此,基本上我无法从A页导航到B页,除非我从欢迎页面中删除一个组件或从DefaultPopover中注释掉注销功能

同样的组件在C页上运行良好。如果我从A页->C页导航,那么我可以导航到B页。在DefaultPopover中,如果我将注销更改为指向WelcomeController,则一切正常。我不知道发生了什么事

我在下面包括了控制器和我的离子信息输出

登录控制器

import {ToastController, NavController, List} from 'ionic-angular/index';
import {WelcomeController} from '../index';
import {Component} from '@angular/core';
import {ListController} from '../content/short_form/list/list.controller';

@Component({
  templateUrl: 'build/pages/login/login.controller.html'
})
export class LoginController
{
  public username : string;
  public password : string;

  constructor(public toast : ToastController, public navCtrl: NavController)
  {
  }

  public checkAuth()
  {
    if (this.username !== 'test' && this.password !== 'test') {
      this.toast.create({
        showCloseButton : true,
        message : 'Username and password wrong',
        position : 'bottom',
        closeButtonText : 'Ok',
        dismissOnPageChange: true
      }).present();
    } else{
      this.navCtrl.setRoot(WelcomeController);
    }
  }
}
import {Component} from '@angular/core';
import {PopoverController} from 'ionic-angular/index';
import {DefaultPopover} from '../../components/popover/default/default.popover';

@Component({
  templateUrl : 'build/pages/welcome/welcome.controller.html'
})
export class WelcomeController
{

  constructor(public popoverCtrl : PopoverController)
  {
  }

  public presentPopover(event)
  {
    this.popoverCtrl.create(DefaultPopover, {}, {
      enableBackdropDismiss : true,
      showBackdrop : true
    }).present({
      ev : event
    });
  }
}
import {Component} from '@angular/core';
import {
  ShortFormEntity,
  DetailsController
} from "../index";
import {ImageService} from "../../../../components/index";
import {NavController, PopoverController} from 'ionic-angular';
import {ShortFormService} from '../services/short_form.service';
import {DefaultPopover} from '../../../../components/popover/default/default.popover';

@Component({
  templateUrl : 'build/pages/content/short_form/list/list.controller.html',
  providers : [ShortFormService, ImageService]
})
export class ListController
{

  public list : [ShortFormEntity];
  private navCtrl : NavController;

  constructor(shortFormService : ShortFormService, navCtrl : NavController, public popoverCtrl: PopoverController)
  {
    this.list = shortFormService.shortForms;
    this.navCtrl = navCtrl
  }

  public createShortForm()
  {
    this.navCtrl.push(DetailsController);
  }

  public openShortForm(id)
  {
    this.navCtrl.push(DetailsController, {
      id : id
    })
  }

  public presentPopover(event)
  {
    this.popoverCtrl.create(DefaultPopover, {}, {
      enableBackdropDismiss : true,
      showBackdrop : true
    }).present({
      ev : event
    });
  }
}
欢迎控制器

import {ToastController, NavController, List} from 'ionic-angular/index';
import {WelcomeController} from '../index';
import {Component} from '@angular/core';
import {ListController} from '../content/short_form/list/list.controller';

@Component({
  templateUrl: 'build/pages/login/login.controller.html'
})
export class LoginController
{
  public username : string;
  public password : string;

  constructor(public toast : ToastController, public navCtrl: NavController)
  {
  }

  public checkAuth()
  {
    if (this.username !== 'test' && this.password !== 'test') {
      this.toast.create({
        showCloseButton : true,
        message : 'Username and password wrong',
        position : 'bottom',
        closeButtonText : 'Ok',
        dismissOnPageChange: true
      }).present();
    } else{
      this.navCtrl.setRoot(WelcomeController);
    }
  }
}
import {Component} from '@angular/core';
import {PopoverController} from 'ionic-angular/index';
import {DefaultPopover} from '../../components/popover/default/default.popover';

@Component({
  templateUrl : 'build/pages/welcome/welcome.controller.html'
})
export class WelcomeController
{

  constructor(public popoverCtrl : PopoverController)
  {
  }

  public presentPopover(event)
  {
    this.popoverCtrl.create(DefaultPopover, {}, {
      enableBackdropDismiss : true,
      showBackdrop : true
    }).present({
      ev : event
    });
  }
}
import {Component} from '@angular/core';
import {
  ShortFormEntity,
  DetailsController
} from "../index";
import {ImageService} from "../../../../components/index";
import {NavController, PopoverController} from 'ionic-angular';
import {ShortFormService} from '../services/short_form.service';
import {DefaultPopover} from '../../../../components/popover/default/default.popover';

@Component({
  templateUrl : 'build/pages/content/short_form/list/list.controller.html',
  providers : [ShortFormService, ImageService]
})
export class ListController
{

  public list : [ShortFormEntity];
  private navCtrl : NavController;

  constructor(shortFormService : ShortFormService, navCtrl : NavController, public popoverCtrl: PopoverController)
  {
    this.list = shortFormService.shortForms;
    this.navCtrl = navCtrl
  }

  public createShortForm()
  {
    this.navCtrl.push(DetailsController);
  }

  public openShortForm(id)
  {
    this.navCtrl.push(DetailsController, {
      id : id
    })
  }

  public presentPopover(event)
  {
    this.popoverCtrl.create(DefaultPopover, {}, {
      enableBackdropDismiss : true,
      showBackdrop : true
    }).present({
      ev : event
    });
  }
}
列表控制器

import {ToastController, NavController, List} from 'ionic-angular/index';
import {WelcomeController} from '../index';
import {Component} from '@angular/core';
import {ListController} from '../content/short_form/list/list.controller';

@Component({
  templateUrl: 'build/pages/login/login.controller.html'
})
export class LoginController
{
  public username : string;
  public password : string;

  constructor(public toast : ToastController, public navCtrl: NavController)
  {
  }

  public checkAuth()
  {
    if (this.username !== 'test' && this.password !== 'test') {
      this.toast.create({
        showCloseButton : true,
        message : 'Username and password wrong',
        position : 'bottom',
        closeButtonText : 'Ok',
        dismissOnPageChange: true
      }).present();
    } else{
      this.navCtrl.setRoot(WelcomeController);
    }
  }
}
import {Component} from '@angular/core';
import {PopoverController} from 'ionic-angular/index';
import {DefaultPopover} from '../../components/popover/default/default.popover';

@Component({
  templateUrl : 'build/pages/welcome/welcome.controller.html'
})
export class WelcomeController
{

  constructor(public popoverCtrl : PopoverController)
  {
  }

  public presentPopover(event)
  {
    this.popoverCtrl.create(DefaultPopover, {}, {
      enableBackdropDismiss : true,
      showBackdrop : true
    }).present({
      ev : event
    });
  }
}
import {Component} from '@angular/core';
import {
  ShortFormEntity,
  DetailsController
} from "../index";
import {ImageService} from "../../../../components/index";
import {NavController, PopoverController} from 'ionic-angular';
import {ShortFormService} from '../services/short_form.service';
import {DefaultPopover} from '../../../../components/popover/default/default.popover';

@Component({
  templateUrl : 'build/pages/content/short_form/list/list.controller.html',
  providers : [ShortFormService, ImageService]
})
export class ListController
{

  public list : [ShortFormEntity];
  private navCtrl : NavController;

  constructor(shortFormService : ShortFormService, navCtrl : NavController, public popoverCtrl: PopoverController)
  {
    this.list = shortFormService.shortForms;
    this.navCtrl = navCtrl
  }

  public createShortForm()
  {
    this.navCtrl.push(DetailsController);
  }

  public openShortForm(id)
  {
    this.navCtrl.push(DetailsController, {
      id : id
    })
  }

  public presentPopover(event)
  {
    this.popoverCtrl.create(DefaultPopover, {}, {
      enableBackdropDismiss : true,
      showBackdrop : true
    }).present({
      ev : event
    });
  }
}
DefaultPopover

import {Component} from '@angular/core';
import {ViewController, NavController} from 'ionic-angular/index';
import {LoginController} from '../../../pages/login/login.controller';

@Component({
  templateUrl : 'build/components/popover/default/default.popover.html'
})
export class DefaultPopover
{
  constructor(public viewCtrl : ViewController, public navCtrl : NavController)
  {
  }

  close()
  {
    this.viewCtrl.dismiss();
  }

  logout()
  {
    this.navCtrl.setRoot(LoginController);
  }
}
离子信息

Cordova CLI: 6.3.1
Ionic Framework Version: 2.0.0-beta.11
Ionic CLI Version: 2.0.0
Ionic App Lib Version: 2.0.0-beta.20
ios-deploy version: Not installed
ios-sim version: Not installed
OS: Mac OS X El Capitan
Node Version: v4.5.0
Xcode version: Xcode 7.2.1 Build version 7C1002
编辑:

澄清@andreaspfr关于进口的问题。我遵循了angular2种子范例,每个目录都有一个index.ts文件,用于导入所有子目录和ts文件。使导入更干净一点

其中pages/index.ts看起来像

export * from './content/index';
export * from './login/index';
export * from './welcome/index';

您确定正确加载Welcome页面吗?在Login.ts中,我可以看到您像这样从“../index”集成WelcomePage
import{WelcomeController}
但是在your Welcome.ts中,您从页面目录
build/pages/Welcome/Welcome.controller.html
加载模板。我想应该是这样的
。/pages/welcome