• angular中ng-class的一些用法


    在前面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。

    在angular中为我们提供了3种方案处理class:
    1:scope变量绑定,如上例。(不推荐使用)
    2:字符串数组形式。
    3:对象key/value处理。

    我们继续其他两种解决方案:
    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混合,其形如:

    复制代码
    function Ctr($scope) { 
    
    }
    
    <div ng-class {'selected': isSelected, 'car': isCar}">
    </div> 
    复制代码

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

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


    作者:破  狼 
    出处:http://www.cnblogs.com/whitewolf/ 
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼

  • 相关阅读:
    java I/O系统之File流
    java 泛型详解
    MariaDB xtrabackup物理备份与还原
    如何解决脚本运行失败,Maven构建结果是成功的状态,与实际不符
    Fillder安装,如何解决证书无法导出
    安全自动化实施方案
    数据格式XML、JSON详解
    接口测试基础
    如何生成Junit报告
    Java连接Oracle
  • 原文地址:https://www.cnblogs.com/yunzhexiaye/p/6292144.html
Copyright © 2020-2023  润新知