AngularJS 中的常用特性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AngularJS 中的常用特性相关的知识,希望对你有一定的参考价值。

3、列表、表格以及其他迭代型元素

  ng-repeat可能是最有用的 Angular 指令了,它可以根据集合中的项目一次创建一组元素的多份拷贝。

  比如一个学生名册系统需要从服务器上获取学生信息,目前先把模型之间定义在 javascript 代码里面:

1 var students = [{name: ‘Mary‘, id: ‘1‘},
2                     {name: ‘Jack‘, id: ‘2‘},
3                     {name: ‘Jill‘, id: ‘3‘}];
4     function StudentListController($scope) {
5         $scope.students = students;
6     }

  为了显示这个学生列表,可以编写如下代码:

1 <ul ng-controller="StudentListController">
2     <li ng-repeat="student in students">
3         <a href="/student/view/{{student.id}}">{{student.name}}</a>
4     </li>
5 </ul>

  ng-repeat 将会生成标签内部所有 html 元素的一份拷贝,包括放指令的标签,显示结果如下:

  技术分享

  根据具体情况分别链接到 /student/view/1、/student/view/2 以及 /student/view/3。

  ng-repeat 指令可以通过 $index 返回当前引用的元素序号(类似<s:iterator>标签中的 index),还可以通过 $first、$middle及 $last,ng-repeat 指令返回布尔值。

4、隐藏和显示

  对于菜单、上下文敏感的工具以及很多其他情况来说,显示和隐藏元素是一项核心功能。

  ng-show 和 ng-hide 指令的功能是等价的,但是运行效果正好相反。

  ng-show 在表达式为 true 时将会显示元素,为 false 时将会隐藏元素;而 ng-hide 则恰好相反。

  工作原理:根据实际情况把元素的样式设置为 display : block 来显示元素;设置为 display : none 来隐藏元素。

5、CSS 类和样式

  目前你已经可以在应用中动态地设置 CSS 类和样式了,只有使用{{  }}插值语法把它们进行数据绑定即可,甚至可以在模板中构造 CSS 类名的部分匹配方式。

.menu-disabled-true {
    color: gray;
}

  使用以下模板,可以将功能显示成禁用状态:

1 <div ng-controller="MenuController">
2     <ul>
3         <li class="menu-disabled-{{isDisabled}}" ng-click="DisabledIt()">Click</li>
4         ...
5     </ul>
6 </div>

  这样通过控制器来设置 isDisabled 属性:

1 function MenuController($scope) {
2     $scope.isDisabled = false;
3 
4     $scope.disabledIt = function() {
5         $scope.isDisabled = true;
6     }
7 }

  这样,只有 isDisabled 为 true 时,拼接出来的才是 menu-disabled-true,CSS 样式才会起作用。

  当使用插值的方式绑定内联样式的时候,同样适用,例如 style = "{{some.expression}}"。

  但是由于这种方式并不灵活,后期维护困难,所以 Angular 中推荐使用 ng-classng-style 指令。

  这两个指令都可以接受一个表达式,表达式执行的结果可能是如下取值之一:

  • 表示 CSS 类名的字符串,以空格分隔
  • CSS 类名数组
  • CSS 类名到布尔值的映射

  我们可以如下实现显示错误和警告信息的功能:

 1 .error {
 2     background-color: red;
 3 }
 4 .warning {
 5     background-color: yellow;
 6 }
 7 <div ng-controller="HeaderController">
 8     ...
 9     <div ng-class="{error: isError, warning: isWarning}">{{messageText}}</div>
10     ...
11     <button ng-click="showError()">Simulate Error</button>
12     <button ng-click="showWarning()">Simulate Warning</button>
13 </div>
14 function HeaderController($scope) {
15     $scope.isError = false;
16     $scope.isWarning = false;
17     
18     $scope.showError = function () {
19         $scope.messageText = ‘This is an error‘;
20         $scope.isError = true;
21         $scope.isWarning = false;
22     };
23     
24     $scope.showWarning = function () {
25         $scope.messageText = ‘Just a warning, Please carry on.‘;
26         $scope.isWarning = true;
27         $scope.isError = false;
28     }
29 }

  你会发现这样实现的很优雅,而且容易维护,下面还可以做一个更炫的事情,例如,把表格中被选中的行进行高亮显示。

 

以上是关于AngularJS 中的常用特性的主要内容,如果未能解决你的问题,请参考以下文章

使用angularjs在html中的表格数据单元格上显示下拉列表

AngularJS 中的常用特性

AngularJS 中的常用特性

将BootstrapJS和AngularJS结合使用以及为啥不用jQuery

AngularJS 的常用特性

基于下拉列表中选项的选择动态更新表格的Angularjs代码