angular基础知识以及样例demo

前端之家收集整理的这篇文章主要介绍了angular基础知识以及样例demo前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Angular 基础知识以及demo样例

1. 四大特征

  • 这些特点同服务段springmvc 完全一致

    1. mvc 设计模式

    2. 双向绑定

    3. 依赖注入

    4. 模块化设计

2. 初始化指令,双向绑定

  1. <!--angular 在body内部都会被识别-->
  2. <body ng-app ng-init="mycore='100'">
  3.  
  4. <!--双向绑定 model 代表数据-->
  5.  
  6. 你考试的总分是: <input ng-model="mycore" /> <br />
  7.  
  8. {{mycore}}分,还需要配继续努力
  9. </body>

3. 控制器

  1. <head>
  2. <Meta charset="UTF-8">
  3. <script src="angular/angular.min.js"></script>
  4. <script src="angular/jquery-2.2.3.min.js"></script>
  5. <title></title>
  6.  
  7.  
  8. <script>
  9. /*定义了一个模块*/
  10. var app = angular.module('mycore',[])
  11.  
  12. /*模块控制器 $scope model view 直接的媒介*/
  13. app.controller('myController',function($scope){
  14.  
  15. $scope.add=function(){
  16.  
  17. return parseInt($scope.yuwen)+parseInt($scope.shuxue);
  18. }
  19. });
  20. </script>
  21.  
  22.  
  23. </head>
  24.  
  25. <!--angular 在body内部都会被识别-->
  26. <body ng-app="mycore" ng-controller="myController" >
  27.  
  28.  
  29. 语文分数:<input ng-model="yuwen" /> <br />
  30. 数学分数:<input ng-model="shuxue" /> <br />
  31.  
  32. 总共分数: {{add()}}
  33.  
  34. </body>
  • 上图代码变量个人理解

    • 定义angular模块为app
    • app.controller ( 控制器名称,function(&scope)) 在控制器的内部可以定义一堆方法
    • $scope.add 定义一个名称为add方法
    • $scope 相当于是一个类
      • $scope.yuwen 相当于 类中的成员变量变
      • $scope.add 相当于 类中的方法名臣
      • function(&scope) 依赖注册这个实体

4. 循环数组-基本数据类型

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <Meta charset="UTF-8">
  5. <script src="angular/angular.min.js"></script>
  6. <title></title>
  7. <script>
  8. var app = angular.module('mycore',[]);
  9.  
  10. app.controller("mycontroller",function($scope){
  11.  
  12. //$scope.list=[99,1,11,9,23,99,3]; /*数据不可以重复,内部存储同时int string类型*/
  13.  
  14. $scope.pp=["北京","你","好",22,66,11]; //定义在控制器中
  15. })
  16. </script>
  17. </head>
  18.  
  19. <!--angular 在body内部都会被识别-->
  20. <body ng-app="mycore" ng-controller="mycontroller" ng-init="findAll()">
  21.  
  22. <table>
  23. <tr> <td>数学</td></tr>
  24. <tr ng-repeat="item in pp">
  25. <td>{{item}}</td>
  26. </tr>
  27. </table>
  28. </html>
  • $scope.pp=[“北京”,”你”,”好”,11]; //定义在控制器中
  • ng-repeat=”item in pp” // item代表每一个成员变量,{{item}}

5. 循环数组对象-基本数据类型

  • 内部的数据类型类似于字符串,最后一个对象的数据“,” 不用加 , name属性没有加双引号

    1. $scope.list=[
    2. {name:'张三',shuxue:100,yuwen:93},{name:'张三',{name:'王五',shuxue:77,yuwen:56}
    3. ]
  • 遍历获取集合中对象的属性值,每个item都代表是一个对象

    1. <tr ng-repeat="item in list">
    2.  
    3. <td>{{item.name}}</td>
    4. <td>{{item.shuxue}}</td>
    5. <td>{{item.yuwen}}</td>
    6. </tr>

6. 内置服务

  • 其实这个内置服务就是在angular中封装了aJax,从而实现同服务端的交互

    1. var app = angular.module("app",[]);
    2.  
    3. //$scope,$http同时都被依赖注入,控制器内部的所有方法都可以调用
    4. app.controller("mycontroller",function($scope,$http){
    5.  
    6. $scope.findAll=function(){
    7. //服务端的内部交互
    8. $http.get('data.json').success(
    9. //如果response返回的json字符串,list内部存储的数组对象
    10. //如果response 返回的是一个object,list就是一个对象
    11. //如果response 返回的是基本数据类型, list就是一个基本数据类型
    12. function(response){
    13.  
    14. $scope.list=response;
    15. }
    16. )
    17. }
    18. })

7. 自定义服务

  • 自定义服务就是将控制层中内置服务提取到service层,可以做到高内聚,低偶合,可以理解为一个抽取的过程,在control层调用服务的时候别忘记,进行注入 ,最简单的理解就是让多个control层去调用相同的服务

    1. var app = angular.module("app",[]);
    2.  
    3. app.service('myservice',function($http){
    4. //内置服务注册的时候要用this
    5. this.find=function(){
    6.  
    7. return $http.get('data.json');
    8. }
    9. })
    10.  
    11. //服务不要忘记注入
    12. app.controller("mycontroller",myservice){
    13. //控制层定义方法的时候要用$scope
    14. $scope.findALL=function(){
    15.  
    16. myservice.find().success(
    17.  
    18. function(response){
    19.  
    20. alert("response")
    21. $scope.list=response;
    22. }
    23. )
    24. }
    25. })

8. 控制器继承

  • 就是将控制层内相同的代码进行向上抽取
  • 第一步 建立父控制器,这些控制器的内容在其他控制层也被用到,因此向上抽取而成立

    1. //基本控制层
    2. app.controller('baseController',function($scope){
    3. //重新加载列表 数据
    4. $scope.reloadList=function(){
    5. //切换页码
    6. $scope.search( $scope.paginationConf.currentPage,$scope.paginationConf.itemsPerPage);
    7. }
    8. //分页控件配置
    9. $scope.paginationConf = {
    10. currentPage: 1,totalItems: 10,itemsPerPage: 10,perPageOptions: [10,20,30,40,50],onChange: function(){
    11. $scope.reloadList();//重新加载
    12. }
    13. };
    14. $scope.selectIds=[];//选中的 ID 集合
    15. //更新复选
    16. $scope.updateSelection = function($event,id) {
    17.  
    18. if($event.target.checked){//如果是被选中,则增加到数组
    19.  
    20. $scope.selectIds.push( id);
    21.  
    22. }else{
    23. var idx = $scope.selectIds.indexOf(id);
    24.  
    25. $scope.selectIds.splice(idx,1);//删除
    26. }
    27. }
    28. })
  • 第二步 修改子类控制器

    1. //1.这个控制器需要注入
    2. app.controller('brandController',$controller,brandService){
    3. //2. 就这么个格式集成父类控制器
    4. $controller('baseController',{$scope:$scope});//继承
    5.  
    6. //读取列表数据绑定到表单中
    7. $scope.findAll=function(){
    8.  
    9. brandService.findAll().success(
    10.  
    11. function(response){
    12.  
    13. $scope.list=response;
    14. }
    15. );
    16. }

2017.9.23 增加内容

判断逻辑

  • 在前端代码增加判断的业务逻辑,当等于3时候不会显示下面的 button内容
  • 在ng-click中执行方法用“ ; ”隔开

    1. <span ng-if="grade!=3">
    2.  
    3. <button type="button" class="btn bg-olive btn-xs" ng-click="setGrade(grade+1);selectList(entity)">查询下级</button>
    4.  
    5. </span>
@H_403_155@下拉选择框的实现

*ng-options 属性可以在表达式中使用数组或对象来自动生成一个 select 中的 option 列表。 ng-options 与 ng-repeat 很相似,很多时候可以用 ng-repeat 来代替 ng-options。但是 ng-options 提供了一些好处,例如减少内存提高速度,以及提供选择框的选项来让用户选择。

  1. <select class="form-control"
  2. ng-model="entity.goods.category1Id"
  3. ng-options="item.id as item.name for item in itemCat1List">
  4. </select>

监控变量值的变化

  • $watch 方法用于监控某个变量的值,当被监控的值发生变化,就自动执行相应的函数

    1. $scope.$watch('entity.goods.category1Id',function(newValue,oldValue) {
    2. //oldValue 未变化的值
    3. //newValue 变化后的值
    4. //根据选择的值,查询二级分类
    5.  
    6. itemCatService.findByParentId(newValue).success(
    7.  
    8. function(response){
    9.  
    10. $scope.itemCat2List=response;
    11.  
    12. }
    13. );
    14. });

猜你在找的Angularjs相关文章