很多人在问我是ionic好呢?还是react好呢? 其实我只想告诉你去看文档啊,不用用怎么知道哪个合适呢? 嘿嘿但是真的这么问的时候我也不会这么回答的,那岂不是太张狂了哈哈哈

react我确实没有用过,所以今天不多做什么评价。但是ionic我在项目中一直用着,想说的是确实很好用。

上一篇文章我们介绍了css3实现聊天界面的布局。那么今天我们就来学习一下,如何在页面进行数据交互。

文章重点:

  1. 如何在页面巧妙的运用ng-class的功能
  2. ng-class有哪些使用方法

接下来我们就围绕以上的重点来讲述:

一、如何在页面巧妙的运用ng-class的功能

上一节我们已经把页面的静态布局给大家一一讲解了,那么我们今天来分享一下怎么动态展示数据,老习惯我们先看代码(PS : CSS部分请查看 CSS3 仿微信聊天小气泡)

HTML

<!-- 聊天界面 -->
<div ng-class="{true: 'leftd', false: 'rightd'}[isUser(c.sender)]" ng-repeat="c in chatAll">
<span ng-class="{true: 'leftd_h', false: 'rightd_h'}[isUser(c.sender)]">
<img ng-src="{{pic(c.sender)}}" />
</span>
<div ng-class="{true: 'speech left', false: 'speech right'}[isUser(c.sender)]">
{{c.data}}
</div>
</div>

  

Controller.js

//返回给我的信息是带有发送者或者接受者的ID的
$scope.isUser = function(chatId) {
if(chatId == cid){
return true;
}else{
return false;
}
}; 

注: 在项目中我们是根据发送者的ID去做判断的 isUser(c.sender)

这里的判断就是根据true/false去判断所要使用的class

第二、ng-class有哪些使用方法

在angular中为我们提供了3种方案处理class:

  1. :scope变量绑定,如上例。(不推荐使用)
  2. :字符串数组形式。
  3. :对象key/value处理。

在前面Angularjs开发一些经验总结中我们说到在angular开发中angular controller never 包含DOM元素(html/css),在controller需要一个简单的POJO(plain object javascript object),与view完全的隔离(交互angularjs框架的职责。但在某些项目中看见controller涉及DOM的元素最多的是在controller scope上定义某变量,其值为class name,形如:

function ctr($scope){
$scope.test =“classname”;
} <div class=”{{test}}”></div>

这种方式完全没错,是angular提供的一种改变class的方式,但是在controller涉及了classname在我看来是乎总是那么诡异,我希望的是controller是一个干净的纯javascript意义的object。

我们继续其他两种解决方案:
1字符串数组形式是针对class简单变化,具有排斥性的变化,true是什么class,false是什么class,其形如;

function Ctr($scope) {
$scope.isActive = true;
} <div ng-class="{true: 'active', false: 'inactive'}[isActive]">
</div>

其结果是2中组合,isActive表达式为true,则 active,负责inactive。

2对象key/value处理主要针对复杂的class混合,其形如:

当 isSelected = true 则增加selected class,
当isCar=true,则增加car class,
所以你结果可能是4种组合。

个人推荐用2,3两种方式,不建议将class放入controller scope之上,scope需要保持纯洁行,scope上的只能是数据和行为。

今天总结到此结束,有不对的地方望大家多多指出哦。让我们一起进步。学习愉快!么么哒。。。。。。

Ionic 的 ng-class 在聊天功能上面的巧妙运用的更多相关文章

  1. ionic实现双击返回键退出功能

    实现这个功能需要四个步骤: 步骤一: 说明:因为需要和手机的硬件(返回按钮)打交道,而ionic本身是不具备该功能的,但是有一个东西可以:ng-cordova插件,这个插件是phoneGap为了能让i ...

  2. [Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能

    一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少 ...

  3. MVC实现类似QQ的网页聊天功能-ajax(下)

    此篇文章主要是对MVC实现类似QQ的网页聊天功能(上)的部分代码的解释. 首先说一下显示框的滚动条置底的问题: 结构很简单一个大的div(高度一定.overflow:auto)包含着两个小的div第一 ...

  4. 最新的chart 聊天功能( webpack2 + react + router + redux + scss + nodejs + express + mysql + es6/7)

    请表明转载链接: 我是一个喜欢捣腾的人,没事总喜欢学点新东西,可能现在用不到,但是不保证下一刻用不到. 我一直从事的是依赖angular.js 的web开发,但是我怎么能一直用它呢?看看最近火的一塌糊 ...

  5. 使用websocket实现在线聊天功能

    很早以前为了快速达到效果,使用轮询实现了在线聊天功能,后来无意接触了socket,关于socket我的理解是进程间通信,首先要有服务器跟客户端,服务的启动监听某ip端口定位该进程,客户端开启socke ...

  6. WebSocket(3)---实现一对一聊天功能

    实现一对一聊天功能 功能介绍:实现A和B单独聊天功能,即A发消息给B只能B接收,同样B向A发消息只能A接收. 本篇博客是在上一遍基础上搭建,上一篇博客地址:[WebSocket]---实现游戏公告功能 ...

  7. socket实现聊天功能(二)

    socket实现聊天功能(二) WebSocket协议是建立在HTTP协议之上,因此创建websocket服务时需要调用http模块的createServer方法.将生成的server作为参数传入so ...

  8. Redis实现聊天功能

    在学习了Redis做为消息队列之后研究 了redis聊天的功能. 其实用关系型数据库也可以实现消息功能,自己就曾经用mysql写过一个简单的消息的功能.RDB中思路如下: ** 在实际中可以完全借助m ...

  9. 微信小程序实现即时通信聊天功能的实例代码

    项目背景:小程序中实现实时聊天功能 一.服务器域名配置 配置流程 配置参考URL:https://developers.weixin.qq.com/miniprogram/dev/api/api-ne ...

随机推荐

  1. ASP.NET Core 在 Swagger UI 中显示自定义的 Header Token

    Swagger 是个好东西,对于前后端分离的网站来说,不仅是提高前后端开发人员沟通效率的利器,也大大方便了后端人员测试 API.有时候,API 中可能需要在 Header 中设置认证参数,比如 aut ...

  2. oracle 删除用户时的坑

    ORACLE在使用 SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='dt_zntg_trade' 删除会话时,一定要注意dt_zntg_trade的 ...

  3. EF之结构进一步优化

    针对之前的使用,做了进一步优化 1.将DAL对象缓存起来 2.仓储类不依赖固定构造的DbContext,执行操作的时候,从线程中动态读取DbContext,这一步也是为了方便将DAL对象缓存起来,解决 ...

  4. lua 和 c/c++ 交互 (持续更新)

    参考: http://blog.csdn.net/xiaohuh421/article/details/7476485 http://blog.csdn.net/shun_fzll/article/d ...

  5. git 设置不需要输入密码

    https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...

  6. build/envsetup.sh 生成的命令详解表

    参考: https://wiki.cyanogenmod.org/w/Envsetup_help 它是一个.sh文件,用source后就生成android编译相关函数,具体如下. 速查 Invokin ...

  7. Ad hoc sql

    SQL Server如何启用Ad Hoc Distributed Queries? 2011-08-11 14:53 wangdingbang CSDN博客 字号:T | T   本文主要介绍了SQL ...

  8. Nginx添加到windows服务

    在windows平台,把Nginx注册到服务,又可以启动.停止和重启的方法,网上并没找到好的办法. 既然如此,唯有自己写程序实现了 使用C#进行编写,有兴趣的可以下载源码自己改:源码下载(2016-1 ...

  9. 通知Notification

    步骤: 1.调用getSystemService()获取NotificationManager:NotificationManager manager = (NotificationManager)g ...

  10. LaTeX用dvi编译,Yap浏览器弹出对话框,决解办法(傻瓜教程)

      1,打开windows-----所有运用,找到CTEX的文件目录 2,打开Previewer对话框 打开后如图: 2,选择view – option 打开后如下图: 3,选择Display---- ...