Ionic 的 ng-class 在聊天功能上面的巧妙运用

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

react我确实没有用过,因此今天很少作什么评价。可是ionic我在项目中一直用着,想说的是确实很好用。css

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

小月博客仿微信聊天界面

文章重点:java

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

接下来咱们就围绕以上的重点来说述:react

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

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

HTMLangularjs

<!-- 聊天界面 -->
 <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框架

第2、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上的只能是数据和行为。

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

相关文章
相关标签/搜索