ionic3 教程(二)登錄頁制作

鏈接:
ionic3 教程(一)安裝和配置
ionic3 教程(二)登錄頁制作
ionic3 教程(三)設(shè)置頁制作
ionic3 教程(四)安卓硬件返回鍵處理
ionic3 教程(五)基本的網(wǎng)絡(luò)請求

運行 platform 中 iOS 和 Android 項目,會發(fā)現(xiàn)一行警告,Not found www/index.html。

這是因為我們的上一次測試的頁面是根目錄中 src 的內(nèi)容,需要把 src 路徑下的內(nèi)容同步過來。

// iOS
$ ionic cordova build ios
// Android
$ ionic cordova build android

// 執(zhí)行完畢后可以去以下路徑檢查一下是否有html文件了

// iOS
platform/ios/www
// Android
platform/android/assets/www

有了內(nèi)容之后,就可以在 Xcode 和 Android Studio 上運行項目了。

這里直我們做一個登錄頁面,了解一些基本知識。

1.修改 Tabs,讓目錄結(jié)構(gòu)清晰

打開 Tabs.html,修改為如下代碼:

<ion-tabs>
    <ion-tab *ngFor="let tabRoot of tabRoots" [root]="tabRoot.root" tabTitle="{{tabRoot.tabTitle}}" tabIcon="{{tabRoot.tabIcon}}"></ion-tab>
</ion-tabs>

打開 Tabs.ts,修改為如下代碼:

import { Component } from '@angular/core';

import { AboutPage } from '../about/about';
import { ContactPage } from '../contact/contact';
import { HomePage } from '../home/home';

@Component({
  templateUrl: 'tabs.html'
})
export class TabsPage {
  tabRoots: Object[];

  constructor() {
    this.tabRoots = [
      {
        root: HomePage,
        tabTitle: 'Home',
        tabIcon: 'home'
      },
      {
        root: ContactPage,
        tabTitle: 'Contact',
        tabIcon: 'notifications'
      },
      {
        root: AboutPage,
        tabTitle: 'About',
        tabIcon: 'document'
      }
    ];
  }
}

這樣你的目錄結(jié)構(gòu)就更加清晰了,方便以后為 Tabs 增加新的模塊

2.新建登錄頁

// cd到項目目錄,然后執(zhí)行下面的代碼
$ ionic g page login

該命令會自動生成這幾個文件,如圖

login.png

3.打開 app.module.ts

導(dǎo)入新生成的 Login

import { LoginPage } from '../pages/login/login';

并分別在加入 declarations 和 entryComponents 后面加入 LoginPage

我們所有新建的頁面都需要在 module 進行聲明才能使用

4.打開app.component.ts

import { LoginPage } from '../pages/login/login';

import 登錄文件,并修改 rootPage 為 LoginPage

5.打開login.html文件,寫入以下代碼

<ion-header>
  <ion-navbar>
    <ion-title>登錄</ion-title>
  </ion-navbar>
</ion-header>

<ion-content>
    <ion-item>
      <ion-label fixed>賬號</ion-label>
      <ion-input type="text" placeholder="請輸入賬號" #username></ion-input>
    </ion-item>
    <ion-item>
      <ion-label fixed>密碼</ion-label>
      <ion-input type="password" placeholder="請輸入密碼" #password></ion-input>
    </ion-item>
  <ion-item no-lines>
    <label item-right>記住密碼</label>
    <ion-toggle></ion-toggle>
  </ion-item>

  <div style="text-align: center; margin-left: 30px; margin-right: 30px;">
    <button ion-button block color="danger" (click)="logIn(username, password)">
      登錄
    </button>
  </div>
</ion-content>

效果如圖所示,其中給 ion-item 加上 no-lines 可以去除底部的線條。(運行方式上一節(jié)已經(jīng)講過了)

登錄.png

界面的樣式會自動適配系統(tǒng),這里安卓的標題會自動左對齊,解決的方法是在scss文件加入

.toolbar-title-md {
  text-align: center;
}

再舉個例子,toggle 在安卓上會顯示:

Android.png

iOS會顯示:

iOS.png

顏色什么的當然可以改,相關(guān)的可以查閱官方文檔。

仔細體會每一行代碼,可以試著刪掉一些元素來看看會發(fā)生什么改變。有人私聊問過我按鈕怎么居中啊,怎么改變按鈕寬度,這里直接上代碼。

6.登錄的實現(xiàn)

修改button的代碼為:

<button ion-button block color="danger" (click)="logIn()">

并在login.ts中寫下以下代碼:

logIn() {
    alert('登錄');
}

瀏覽器自動 build 之后,再次點擊,就會彈出登錄的提示框。這個logIn方法沒有寫權(quán)限修飾符,默認的話是 public 的。

這里有個問題,我們?nèi)绾蝹髦岛万炞C。這里我給出一種簡單的解決方案。這個 (click)="logIn()" 明顯后面的括號里是可以傳值的。我們修改代碼如下

login.html
分別修改兩個 input

<ion-input type="text" placeholder="請輸入賬號" #username></ion-input>
<ion-input type="password" placeholder="請輸入密碼" #password></ion-input>

將值傳入 button 的點擊事件

<button ion-button block color="danger" (click)="logIn(username, password)">

login.ts

修改logIn方法

logIn(username: HTMLInputElement, password: HTMLInputElement) {
    let userinfo: string = '用戶名:' + username.value  + '密碼:' + password.value;
    alert(userinfo);
}

這回你點擊時候就會輸出用戶名和密碼了。
同理,我們可以加上驗證

logIn(username: HTMLInputElement, password: HTMLInputElement) {
    if (username.value.length == 0) {
        alert("請輸入賬號");
    } else if (password.value.length == 0) {
        alert("請輸入密碼");
    } else {
        let userinfo: string = '用戶名:' + username.value + '密碼:' + password.value;
        alert(userinfo);
    }
}

最后導(dǎo)入頭文件,并實現(xiàn)跳轉(zhuǎn)

import { TabsPage } from "../tabs/tabs";

在登錄成功后面加入以下代碼:

this.navCtrl.push(TabsPage);

測試一下,輸出賬號密碼,點擊登錄即可跳轉(zhuǎn)到 Tabs 頁面。

Demo下載地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容