GVKun编程网logo

angularJs中关于ng-class的三种使用方式说明(angularjs ng-class)

11

在本文中,我们将详细介绍angularJs中关于ng-class的三种使用方式说明的各个方面,并为您提供关于angularjsng-class的相关解答,同时,我们也将为您带来关于AngularJSn

在本文中,我们将详细介绍angularJs中关于ng-class的三种使用方式说明的各个方面,并为您提供关于angularjs ng-class的相关解答,同时,我们也将为您带来关于AngularJS ng依赖注入的三种方式、angularjs – 如何使用ngClass的动态值、AngularJS 世界------Angularjs指令的使用方式和自定义指令、angularJs 中关于 ng-class 的三种使用方式说明的有用知识。

本文目录一览:

angularJs中关于ng-class的三种使用方式说明(angularjs ng-class)

angularJs中关于ng-class的三种使用方式说明(angularjs ng-class)

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子。

而在这所谓的样子当然就是改变其css的属性,而实现能动态的改变其属性值,必然只能是更换其class属性

这里有三种方法:

第一种:通过数据的双向绑定(不推荐)

第二种:通过对象数组

第三种:通过key/value

下面简单说下这三种:

第一种:通过数据的双向绑定

实现方式:

functionchangeClass(){
$scope.className="change2";
}

<div></div>

网上各种不推荐,说实话,既然angularJS双向数据绑定这么吊,为什么不能通过这个来改变呢!查了下原由:“在controller涉及了classname在我看来是乎总是那么诡异,我希望的是controller是一个干净的纯javascript意义的object”,当然并没有明文固定不能够这么使用的,而且反而我觉得这样非常的方便,让html中元素想怎么变就怎么变!同理中的img元素中的src就不可以通过别的来改变,但是通过这种方式就是可以的!

当然,这种方式也的确给人的感觉怪怪的,个人认为:可以不得已而为之~

第二种:通过字符串数组的形式来改变

实现方式:

functionchangeClass(){
$scope.className=true/false;
}

<divng-></div>

实现很简单,就是当className为真的时候class为zhende,相反则为jiade。

但是有一点不好的只能够让一个元素拥有两种状态,虽然这么说!基本也是满足所需了,我一般都用这个。简单、直观!

第三种:通过key/value的方式

实现方式:

functionchangeClass(){
$scope.lala=true;
}

<divng-></div>

当lala为true的时候,class则为haha,个人认为这个是比较推荐的,可以弥补第二种方式的点点遗憾~

所以基本上,angularJS中ng-class的实现就这三种方式~

AngularJS ng依赖注入的三种方式

AngularJS ng依赖注入的三种方式

1.内联式注入(最基本的方式)

<!DOCTYPE html>
<html ng-app="MyModule">
<head>
<title>最基本的依赖注入方式</title>
<Meta charset="utf-8"/> 
<script src="../Script/angular.min.js" type="text/javascript"></script>
<script src="base.js"></script>
<link rel="stylesheet" href="../bootstrap-3.0.0/css/bootstrap.css">
</head>
<body>
<div>
  <div ng-controller="MyCtrl">
     <span>{{gameName}}</span>
  </div>
</div>
</body>
</html>

//最基本的依赖注入方式
var MyModule = angular.module("MyModule",[]);
MyModule.controller('MyCtrl',['$scope',function($scope){             //可以修改参数,如$scope1,但下面必须同时改
      $scope.gameName = "海哥帅!"
	}
]);

2.推断型注入

//推断型注入方式:函数参数的名称必须要和被注入的对象相同
var MyModule = angular.module("MyModule",[]);

var MyCtrl = function($scope){
	$scope.gameName = "海哥帅!";
}

MyModule.controller('MyCtrl',MyCtrl);

3.声明式注入

//声明式注入
var MyModule = angular.module("MyModule",[]);

var MyCtrl = function(thisISMyName){    //参数名称可以随意变化
	thisISMyName.gameName = "海哥帅!";
}

MyCtrl.$inject = ['$scope'];       //加载模块

MyModule.controller('MyCtrl',MyCtrl);

angularjs – 如何使用ngClass的动态值

angularjs – 如何使用ngClass的动态值

我试图应用与一个作用域变量相同的类名.

例如:

< divng-class =“{item.name:item.name}”>

所以item.name的值被添加到类中.这似乎什么都不做.有什么建议如何做到这一点?

谢谢!

编辑:

这实际上是在选择中使用ng选项来完成的.例如:

< select ng-options =“c.code as c.name for c in countries”>< / select>

现在,我想应用一个具有c.code值的类名

我发现以下指令,似乎有效,但不是插值的值:

angular.module('directives.app').directive('optionsClass',['$parse',function ($parse) {
  'use strict';

  return {
    require: 'select',link: function(scope,elem,attrs,ngSelect) {
      // get the source for the items array that populates the select.
      var optionsSourceStr = attrs.ngOptions.split(' ').pop(),// use $parse to get a function from the options-class attribute
      // that you can use to evaluate later.
          getoptionsClass = $parse(attrs.optionsClass);

      scope.$watch(optionsSourceStr,function(items) {
        // when the options source changes loop through its items.
        angular.forEach(items,function(item,index) {
          // evaluate against the item to get a mapping object for
          // for your classes.
          var classes = getoptionsClass(item),// also get the option you're going to need. This can be found
          // by looking for the option with the appropriate index in the
          // value attribute.
              option = elem.find('option[value=' + index + ']');

          // Now loop through the key/value pairs in the mapping object
          // and apply the classes that evaluated to be truthy.
          angular.forEach(classes,function(add,className) {
            if(add) {
              angular.element(option).addClass(className);
            }
          });
        });
      });
    }
  };

}]);
比以往更好.
<div ng->

是. ‘和{{for classname.

AngularJS 世界------Angularjs指令的使用方式和自定义指令

AngularJS 世界------Angularjs指令的使用方式和自定义指令

AngularJS 通过被称为 指令 的新属性来扩展 HTML。
AngularJS 通过内置的指令来为应用添加功能。
AngularJS 允许你自定义指令。

AngularJS 内置指令

AngularJS 指令是扩展的 HTML 属性,带有前缀 ng-。
例如之前用过的几个指令:
ng-app 指令初始化一个 AngularJS 应用程序。
ng-init 指令初始化应用程序数据。
ng-model 指令把元素值(比如输入域的值)绑定到应用程序。
基本的指令内容可以参考angularjs指令手册

<div ng-app="" ng-init="blogname='艾斯博弈'"> <p>在输入框中尝试输入:</p> <p>姓名:<input type="text" ng-model="blogname"></p> <p>你输入的为: {{ blogname}}</p> </div>

数据绑定

数据绑定是angularjs有一个重要的特性
上面实例中的 {{ blogname}} 表达式是一个 AngularJS 数据绑定表达式。
AngularJS 中的数据绑定,同步了 AngularJS 表达式与 AngularJS 数据。
{{ blogname}} 是通过 ng-model=”blogname” 进行同步。

重复 HTML 元素

ng-repeat 指令会重复一个 HTML 元素:

<div ng-app="" ng-init="names=['Jani','Hege','Kai']"> <p>使用 ng-repeat 来循环数组</p> <ul> <li ng-repeat="x in names"> {{ x }} </li> </ul> </div>

总结以上几个指令

ng-app 指令

ng-app 指令定义了 AngularJS 应用程序的 根元素。
ng-app 指令在网页加载完毕时会自动引导(自动初始化)应用程序。
稍后您将学习到 ng-app 如何通过一个值(比如 ng-app=”myModule”)连接到代码模块。

@H_301_147@ng-init 指令

ng-init 指令为 AngularJS 应用程序定义了 初始值。
通常情况下,不使用 ng-init。您将使用一个控制器或模块来代替它。
稍后您将学习更多有关控制器和模块的知识。

ng-model 指令

ng-model 指令 绑定 HTML 元素 到应用程序数据。
ng-model 指令也可以:
为应用程序数据提供类型验证(number、email、required)。
为应用程序数据提供状态(invalid、dirty、touched、error)。
为 HTML 元素提供 CSS 类。
绑定 HTML 元素到 HTML 表单。

ng-repeat 指令

ng-repeat 指令对于集合中(数组中)的每个项会 克隆一次 HTML 元素。

创建自定义的指令

除了 AngularJS 内置的指令外,我们还可以创建自定义指令。
你可以使用 .directive 函数来添加自定义的指令。
要调用自定义指令,HTMl 元素上需要添加自定义指令名。
*使用驼峰法来命名一个指令, iceboyDirective,
但在使用它时需要以 - 分割,iceboy-directive;
*自定义指令可以通过多种方式来进行调用,
也可以限制你的指令只能通过特定的方式来调用,
如:元素名、属性、类名、注释
restrict 值可以是以下几种:
E 只限元素名使用
A 只限属性使用
C 只限类名使用
M 只限注释使用,需要增加 replace : true,
restrict 默认值为 EACM,即可以通过元素名、属性名、类名和注释来调用指令。

<body ng-app="myApp">
<iceboy-directive></iceboy-directive>
<div iceboy-directive></div>
<div class="iceboy-directive"></div>
<!-- directive: iceboy-directive -->
<script> var app = angular.module("myApp",[]); app.directive("iceboyDirective",function() { return { restrict : "EACM",replace : true,template : "<h1>MySelf-Directive!</h1>" }; }); </script>
</body>

angularJs 中关于 ng-class 的三种使用方式说明

angularJs 中关于 ng-class 的三种使用方式说明

在开发中我们通常会遇到一种需求:一个元素在不同的状态需要展现不同的样子。

而在这所谓的样子当然就是改变其 css 的属性,而实现能动态的改变其属性值,必然只能是更换其 class 属性

这里有三种方法:

第一种:通过数据的双向绑定(不推荐)

第二种:通过对象数组

第三种:通过 key/value

下面简单说下这三种:

第一种:通过数据的双向绑定

实现方式:

function changeClass(){
  $scope.className = "change2";
}

<div class="{{className}}"></div>

网上各种不推荐,说实话,既然 angularJS 双向数据绑定这么吊,为什么不能通过这个来改变呢!查了下原由:“在 controller 涉及了 classname 在我看来是乎总是那么诡异,我希望的是 controller 是一个干净的纯 javascript 意义的 object”,当然并没有明文固定不能够这么使用的,而且反而我觉得这样非常的方便,让 html 中元素想怎么变就怎么变!同理中的 img 元素中的 src 就不可以通过别的来改变,但是通过这种方式就是可以的!

当然,这种方式也的确给人的感觉怪怪的,个人认为:可以不得已而为之~

 

第二种:通过字符串数组的形式来改变

实现方式:

function changeClass(){
  $scope.className = true/false;
}
 
<div ng-class="{true:''zhende'',false:''jiade''}[className]"></div>

实现很简单,就是当 className 为真的时候 class 为 zhende,相反则为 jiade。

但是有一点不好的只能够让一个元素拥有两种状态,虽然这么说!基本也是满足所需了,我一般都用这个。简单、直观!

第三种:通过 key/value 的方式

实现方式:

function changeClass(){
  $scope.lala = true;
}
 
<div ng-class="{''selectClass'':select,''choiceClass'':choice,''haha'':lala}"></div>

当 lala 为 true 的时候,class 则为 haha,个人认为这个是比较推荐的,可以弥补第二种方式的点点遗憾~

 

所以基本上,angularJS 中 ng-class 的实现就这三种方式~


关于angularJs中关于ng-class的三种使用方式说明angularjs ng-class的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于AngularJS ng依赖注入的三种方式、angularjs – 如何使用ngClass的动态值、AngularJS 世界------Angularjs指令的使用方式和自定义指令、angularJs 中关于 ng-class 的三种使用方式说明等相关知识的信息别忘了在本站进行查找喔。

本文标签: