angular控制器和指令

2018-11-04  本文已影响0人  yscmh

Angular

Angular vs jQuery

回顾并总结Angular开发流程

MVC

$scope

[图片上传失败...(image-280ac-1541335188420)]

ViewModel

Angular 模块

Angular中模块的划分方式

Angular 控制器

传统的方式创建控制器

    // 创建控制器(1.2.x版本)
    // angular会把全局的函数当作控制器
    function demoController($scope){
      $scope.name = '小明'
    }

    function xxx($scope){
      $scope.age = 18
    }

面向对象的方式创建控制器

<!-- 这里的obj 代表控制器中回调函数new 出的对象 -->
<div ng-controller="demoController as obj">
  <p>{{myname}}</p>
  <p>{{obj.name}}</p>
</div>
    // 1.创建模块
    var app = angular.module('myApp', [])

    // 2.创建控制器
    // angular会把这二个参数当作构造函数使用
    app.controller('demoController', function($scope){
      $scope.myname='小红'
      this.name = '小明'
    })

安全的方式创建控制器

    // 把第二个参数改为一个数组,在数组把我们需要的参数的名字写上
    // 回调函数就写在数组的最后一个元素上
    // *注意*:数据中传入的元素的顺序,要和function的中顺序一一对应
    app.controller('demoController',['$scope','$log',function($scope,$log){
      $scope.msg = 'hello World!'
      $log.log('哈哈哈哈!')
    }])

指令

ng-bind

ng-cloak

ng-repeat

    <!-- ng-repeat 遍历生成数据,类似for in 循环的语法 -->
      <li ng-repeat="item in users" >
        {{item.name}} , {{item.age}}
      </li>

       // 1.创建模块
    var app = angular.module('myApp', [])

    // 2.创建控制器
    app.controller('demoController',['$scope',function($scope){
      // 初始化数据
      $scope.users = [
        {name:'小明',age:18},
        {name:'小红',age:18},
        {name:'小朋',age:28},
        {name:'小月',age:19},
        {name:'小黑',age:18},
        {name:'小白',age:20}
      ]

      $scope.arr = [1,2,3,4,5,1]

      // 我们希望也能够把这个对象时的数据遍历出来。
      $scope.obj = {
        xm:{name:'小明',age:18},
        xh:{name:'小红',age:28},
        xt:{name:'小天',age:10},
        xy:{name:'小月',age:38}
      }
    }])

ng-repeat补充

    <!--  $odd, ng-repeat在每次遍历时都提供这样的值,为true表明当前数据是否第奇数条,从索引为0开始判断的 -->
    <!--  $even, ng-repeat在每次遍历时都提供这样的值,为true表明当前数据是否第偶数条,从索引为0开始判断的 -->
      <li class="{{ $odd ?'red':'green'}}" ng-repeat="item in data">
        {{item.name}},{{item.age}}
      </li>

ng-class

    <!--  ng-class,动态的添加class样式,
      以对象的形式书写,angular会把属性值为true的属性名当作样式添加到class
      class="green" -->
    <li ng-class="{red:item.age>=20, green:item.age>=10&&item.age<20,blue:item.age<10}" ng-repeat="item in data">
      {{item.name}},{{item.age}}
    </li>

ng-show/ng-hide

    <!-- ng-show,控制元素的显示或隐藏,值为true时显示,为false隐藏-->
    <p ng-show="isShowing">我是中国人,我爱自己的祖国!</p>
    <!-- ng-hide 值为true时,隐藏当前元素 -->
    <p ng-hide="true">我是小明!</p>

ng-if

    <!-- ng-if,也能控制元素的显示或隐藏,为true时显示,为false时【会将当前dom元素移除】 -->
    <p ng-if="true">我是中国人,我爱自己的祖国!</p>
    <h1>ng-if="false"</h1>
    <p ng-if="false">我是中国人,我爱自己的祖国!</p>

ng-switch

    <div ng-switch="name">
      <div ng-switch-when="小明">
        我是小明,我在这里!
      </div>
      <div ng-switch-when="小红">
        我是小红!
      </div>
    </div>

其他常用指令

常用事件指令

不同于以上的功能性指令,Angular还定义了一些用于和事件绑定的指令:

指令的其他使用方式

data-xxx,在使用angular指令时,只需要在原先的指令前加上data-前缀。
如: data-ng-app,data-ng-click
x-ng-app,x-ng-click

上一篇 下一篇

猜你喜欢

热点阅读