[Ionic 2从入门到精通] 7.5 聊天信息和导航

明显这是我们应用中最重要的功能之一,但是实现起来蛮简单的。最难的部分是整合PouchDB和Cloudant,我们稍后实现,目前我们只要给登录的用户提供想屏幕上添加信息的能力就可以了。
我们也会利用导航来绑定一些东西 -- 我们有一个带有选项的菜单但是啥事都没做,和一个什么都没有的about页。

添加信息

在咱们的home也类定义中,我们已经设置了输入框和this.chatMessage变量的绑定,以及一些按钮来触发sendMessage函数,所以启用创建信息的能力只需要去实现sendMessage函数即可。我们还要修改模板来循环展示所有可以信息。
> 修改 src/pages/home/home.ts 的sendMessage函数为如下:

sendMessage(): void {
    let message = {
        '_id': new Date().toJSON(),
        'fbid': this.dataService.fbid,
        'username': this.dataService.username,
        'picture': this.dataService.picture,
        'message': this.chatMessage
    };
    this.messages.push(message);
    this.chatMessage = '';
}

在这里我们使用一些属性创建了一个message对象。我们加入了刚刚从Facebook得到的所有信息,以及用户输入的信息。我们也添加了一个“id”字段给下节课整合的PouchDB和Cloudant使用,目前请无视。
完成信息的创建之后我们将他压入信息数组然后重设聊天信息输入框(这样用户可以接着用来输入信息了)。我们下节课再对他进行修改让这些信息可以发送到远程后端,而不是直接压入到信息数组。
现在我们有了将一些数据压入信息数组的能力,我们修改模板来展示他们。
> 修改 src/pages/home/home.html 的列表如下:

<ion-list no-lines>
    <ion-item *ngFor="let message of messages">
        <ion-avatar item-left>
            <img [src]="message.picture">
        </ion-avatar>

        <div>
            <h2>{{message.username}}</h2>
            <p>{{message.message}}</p>
        </div>
    </ion-item>
</ion-list>

现在我们循环所有的信息并将它们显示到他们自己的<ion-item>中。记住'ngFor'是创建嵌入模板的快捷方式,'ngFor'将为messages里面的每个message创建一个嵌入模板并使用指定的信息进行渲染。我们可以通过message提供的数据展示用户头像,用户名还是信息本身。
如果你现在运行应用的话,你应该可以添加一些测试信息到应用并看到他们显示出来(记住,必须在真机上测试因为Facebook登录在ionic serve中不会正常工作):

6.6.1.jpg

制作About页

我们设置好了策划菜单,但是实际上现在能用的只有‘Logout’按钮。我们还需要制作about也并连接过去,还有‘Chat’按钮和主页的连接。我们先来实现about页。
> 修改 src/pages/about/about.html 为如下:

<ion-header>
<ion-navbar color="primary">
<button ion-button icon-only menuToggle>
<ion-icon name="menu"></ion-icon>
</button>
<ion-title>
<img src = "assets/images/logo.png" class="logo" />
</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
<p>Camper Chat allows you to talk to other <strong>caravaners, RV'ers,
roadtrippers and campers</strong> near you. Use Camper Chat to give
and receive tips, ask for help with your flat tyre, or just have a
friendly chat.</p>
</ion-content>

很简单的页面,没啥好看的。和home页一样我们实现了menuToggle按钮,然后添加了一些描述性的内容。
现在我们来设置菜单上点击处理器了。如果现在看一眼app.html的话发现这些按钮都是调用的openPage函数:

<button ion-item (click)="openPage(homePage)">
    <ion-icon name="chatbubbles"> Chat</ion-icon>
</button>
<button ion-item (click)="openPage(aboutPage)">
    <ion-icon name="information-circle"> About</ion-icon>
</button>

只是一个传入‘homePage’另一个传入‘aboutPage’。我们现在设置openPage函数。
> 修改 src/app/app.component.ts 的 openPage 函数如下:

openPage(page): void {
    this.menu.close();
    this.nav.setRoot(page);
}

首先我们关闭了菜单,因为用户进行了选择(如果菜单还是停止那里的话挺烦人的)然后通过我们的nav组件更改了根页面。我们将它设置为传入的页面参数,因为我们已经设置好了homePageaboutPage的引用:

homePage: any = HomePage;
aboutPage: any = AboutPage;

当调用此函数的时候会转到对应的页面上去。现在用户可以来回切换about页和chat页了,然后他们也可以登出返回到登录页。
我们现在设置好了所有的基本功能,还有一件要做的大师赛整合PouchDB和Cloudant,下节课的内容,然后整理整理让他变漂亮点就可以了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352

推荐阅读更多精彩内容