(4)增加页面

隐身守侯 提交于 2019-12-02 21:50:48

在app/app.html中,我们看到了这样一行代码

<ion-nav #content [root]="rootPage"></ion-nav>

注意 [root] 属性的绑定,它声明了 ion-nav 控制的root页面:当导航控制器被加载后, rootPage 组件中声明的页面将会被当作root页面.

在 app/app.js中,根组件MyApp在它的构造器中做了如此声明

import {App, IonicApp, Platform} from 'ionic/ionic';
import {HelloIonicPage} from './hello-ionic/hello-ionic';
import {ListPage} from './list/list';


class MyApp {  
constructor(app: IonicApp, platform: Platform) {    
   
    // set up our app
    this.app = app;    
    this.platform = platform;    
    this.initializeApp();    
   
    // set our app's pages
    this.pages = [
      { title: 'Hello Ionic', component: HelloIonicPage },
      { title: 'My First List', component: ListPage }
    ];    
    
    // make HelloIonicPage the root (or first) page
    this.rootPage = HelloIonicPage;
  }

  ...
}

此处,设置了HelloIonicPage为nav控制器被加载时显示的第一个页面.

创建一个页面

接下看,让我们看下引入的这个HelloIonicPage,你可以在app/hello-ionic/文件夹下找到hello-ionic.js

这儿我们会看到命名规则:在hello-ionic/文件夹下面有三个文件hello-ionic.jshello-ionic.html, and hello-ionic.scss.

然后你会看到如下代码,它定义一个了一个HelloIonicPage类并且导出.它创建了一个Angular组件--Page,并且配置好了这个组件运行所需的一切,指令.

import {Page, NavController} from 'ionic/ionic';

@Page({
  templateUrl: 'app/hello-ionic/hello-ionic.html'})
  
export class HelloIonicPage {
  constructor(nav: NavController) {
      this.nav = nav;
  }

}

 注意到,此处我们传入了.nva对象,并且在构造器中把它设置成了一个属性

每一个页面中都会有一个类已经和这个类绑定的页面模板,让我们来看下

这个Page绑定的hello-ionic.html

打开app/hello-ionic/hello-ionic.html

<ion-navbar *navbar>

  <a menu-toggle>
    <icon menu></icon>
  </a>
  
  <ion-title>
     Hello Ionic
  </ion-title>
  
</ion-navbar>

<ion-content padding class="getting-started">

  <h3>Welcome to your first Ionic app!</h3>

  <p> This starter project is our way of helping you get a functional app running in record time.
    ...  
  </p>
</ion-content>

<ion-navbar *navbar>声明这个标签内的数据,是给导航bar调用的 当我们打开这个页面的时候,导航栏内的数据将会被更新:

导航栏中的按钮(button)数据被更新为ion-nav-items(这里具体指的是i?????吧,可以自己试试,原文是ion-nav-content)

导航栏的标题(title)被更新为 <ion-title>

其他部分都是ionic的标准写法,它定义了内容区域,在这里输出了一个欢迎信息.

创建其他的页面

要创建另一个页面,我们只需要正确设置了导航栏上需要显示的标题和其他内容即可.

让我们看一下app/list/list.js的内容,这儿定义了一个新的页面

import {IonicApp, Page, NavController, NavParams} from 'ionic/ionic';

@Page({
  templateUrl: 'app/list/list.html'
})

export class ListPage {
  constructor(app: IonicApp, nav: NavController, navParams: NavParams) {
      this.nav = nav;
    ...
   }
   ...
   itemTapped(event, item) {
        console.log('You selected', item.title);
   }
}

这个js文件会创建一个基本的列表页,它包含了许多items.注意到这里我们定义了一itemTapped方法,这个方法会输出你选中的item

现在让我们看一下这个方法是怎么被调用的,打开app/list/list.html,我们会看到

<ion-item *ng-for="#item of items" (click)="itemTapped($event, item)">

这将添加到列表中的每一个项目,并且给每个项目添加一个click触发器,当这个项目被点击,将会调用itemTapped方法--这个方法会在console中打印出对应项目的标题.


参考来自adding_pages

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!