【Angular1】基础使用及各类方法

宗增
2023-12-01

Angular的先决条件

  • 在head标签中引入angular.min.js文件

Angular的初步使用

  • 在body标签中添加ng-app
  • angularJS中表达式的形式是一对嵌套的大括号{{表达式的内容}}

Angular的双向绑定

  • 在保证配置完成之后在进行双向绑定

  • Angular的双向绑定的使用是通过ng-model实现的

    • 举例input

      • 用户名:<input ng-model="username" /><br>
        密码:<input ng-model="password" type="password" /><br>
        //下方的username和password会实时的根据input中输入进行更新
        {{username}}-{{password}}
        

Angular的初始化

  • 在body标签中使用ng-init进行初始化,可以对页面刚开始呈现时所需要显示的字段进行编辑

  • 举例input

    • <body ng-app ng-init="username='张三'">
          //在页面刚开始显示时用户名的值为张三
          用户名:<input ng-model="username" /><br>
          密码:<input ng-model="password" type="password" /><br>
          {{username}}-{{password}}
      </body>
      

Angular控制器和点击事件

  • 在单击事件中绑定方法,并在控制器中定义方法

  • 举例两数之和

    • <body ng-app="myApp" <--myApp对应的是script中angular.module定义的myApp-->
            ng-controller="myController" <--myController对应的是script中的myController-->>
          num1<input ng-model="x" /> + num2<input ng-model="y" /> <button ng-click="add()"<--绑定事件-->>=</button>{{z}}
      </body>
      
      <script>
          var app = angular.module("myApp", []);
          app.controller("myController", function ($scope) {
              $scope.add = function () {//在控制器中定义方法
                  $scope.z = parseInt($scope.x) + parseInt($scope.y);
              }
          })
      </script>
      

Angular循环遍历指令

  • 在控制器中创建需要遍历的集合,在body中使用ng-repeat来遍历list集合

  • ng-repeat=“变量 in 集合名称”(集合名称不一定非要是list)

  • 举例遍历名称

    • <body ng-app="myApp" ng-controller="myController">
          <div ng-repeat="name in list"><--循环遍历list集合-->
              {{name}}
          </div>
      </body>
      
      <script>
          var app = angular.module("myApp", []);
          app.controller("myController", function ($scope) {
              $scope.list = ["张三", "李四", "王五"];//创建list集合
          })
      </script>
      

Angular获取行索引

  • 在Angular中ng-repeat中获取索引只需要$index

  • 举例单击事件删除行

    • <td>
      	<button type = "butten" ng-click = "deleTableByRow($index)">删除</butten>
      	<--在deleTableByRow()方法中可以直接传入参数$index来获取行索引-->
      </td>
      

Angular条件判断

  • 使用ng-if=""来对参数进行判断

  • 举例

    • <span ng-if="num!=3">显示num不等于3的情况</span>
      

Angular选择

  • 使用ng-options指令指定select内容的数据源指令

  • 语法:ng-options=“变量.属性1 as 变量.属性2 for 变量 in 数据集合”

  • 变量是一个实体类,是数据库中的一条数据,as前面的部分是值value(举例:id),as后面的部分是显示的文本(举例:name)

  • 举例查询数据(1,北京;2,上海)数据集合为itemList

    • <select ng-options = "item.id(举例:1) as item.name(举例:北京) for item in itemList"></select>
      

Angular关于布尔属性的指令

  • angularjs提供了两个Boolean指令

  • ng-true-value该指令的含义为,当Boolean类型为true时,所对应的value值为多少

  • 举例勾选菜单(勾选返回的值为1)

    • <input type="checkbox" ng-model="entity.status" ng-true-value="1">
      
  • ng-false-value该指令的含义为,当Boolean类型为false时,所对应的value值为多少

  • 举例勾选菜单(不勾选返回的值为0)

    • <input type="checkbox" ng-model="entity.status" ng-true-value="0">
      

Angular的ng-checked指令(是否必输)

  • 该指令用于input标签中的checkbox标签,用来显示复选框是否需要勾选

  • 使用方式为ng-checked = “布尔值”

  • 举例是否为必输项

    • 必输项
      <input  type="checkbox" ng-checked="true" />
      非必输项
      <input  type="checkbox" ng-checked="false" />
      

Angular的bg-bind-html指令(显示html的内容)

  • 当后台返回数据是html数据,但要在界面解析该html,那就不能使用表达式了,需要使用指令来完成

  • 举例后台返回表头数据

    • <div class = "..." ng-bind-html = "item.title">
      	<--数据处理-->
      </div>
      

Angular的自定义模块使用($scope)

  • $scope的使用贯穿了Augular应用

  • $scope与数据模型相关联,同时也是表达式执行的上下文的**“交通工具”**

  • s c o p e 在 ∗ ∗ 视图层 ∗ ∗ ( V i e w ) 和控制层 ( C o n t r o l l e r ) 之间建立了通道,而基于作用域视图在我们修改了 ∗ ∗ 数据 ( n g − m o d e l 所绑定的数据 ) ∗ ∗ 之后会立即更新 scope在**视图层**(View)和控制层(Controller)之间建立了通道,而基于作用域视图在我们修改了**数据(ng-model所绑定的数据)**之后会立即更新 scope视图层(View)和控制层(Controller)之间建立了通道,而基于作用域视图在我们修改了数据(ngmodel所绑定的数据)之后会立即更新scope

  • $scope在发生改变的同时也会立刻重新渲染视图

  • 操作步骤

    • 定义模块

      • 使用方式:angular.module(“模块名称”,[])

      • 参数说明:

        • 模块名称为标签中的ng-app属性所定义的值
        • []是一个数组,元素为其他模块,若该模块的使用不需要引入其他模块,则为空
      • 举例定义一个名称为myApp的模块

        • var app = angular.module("myApp",[]);
          
    • 引入模块

      • 在body标签中进行引入

      • 举例引入名称为myApp的模块

        • <body ng-app = "myApp">
          
    • 定义控制器Controller

      • var app = angular.module("myApp",[]);
        
      • 使用方式:定义模块变量(app).controller(“控制器名称”,function($scope){})

      • 参数说明:

        • 控制器名称是要在body标签中引入的名称
        • 函数类型参数为$scope,编写业务逻辑对数据进行控制
    • 引入控制器

      • 在body标签中进行引入

      • 举例引入myController控制器

        • <body ng-app = "myApp" ng-controller="myController">
          

Angular的内置服务

$http

  • 前端实现对数据的实现,我们就需要从后端进行获取,一般采用内置服务$http来实现数据访问

  • <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <script src="angular.min.js"></script>
    <script type="text/javascript">
    	var app = angular.module("myApp",[]);
    	app.controller("myController",function($scope,$http){
    		$scope.findList = function(){
    			$http.get("data.json").success(function(response){
    				$scope.list	= response ;
    			});
    		}
    	});
    </script>
    </head>
    <body ng-app="myApp" ng-controller="myController" ng-init="findList()">
    	<div ng-repeat="o in list">
    		姓名:{{o.name}}  年龄:{{o.age}}
    	</div>
    </body>
    </html>
    

$location

  • 该服务可以分析浏览器地址栏中的URL,可以在应用中较为方便的使用URL中的内容,在地址栏中修改URL会影响 l o c a t i o n 服务,而在 location服务,而在 location服务,而在location中修改URL,也会影响到地址栏中

  • 基本用法

    • search方法

      • 使用该服务最常用的方法,该方法可以获取到地址栏的参数,通常使用search()方法

        • 使用方法:$location.search();
      • search方法也可以修改url的参数部分

        • 使用方法:$location.search(‘字段名称’,‘修改数值’);
      • 可以一次性修改多个

        • 使用方法:

          • $location.search({
                id: '666',
                taskContract: 'abc'
            })
            
      • 可以删除属性(若存在则删除,若不存在,则相当于没有修改过)

        • 使用方法:$location.search(‘id’, null);
      • 注意事项:

        • 该方法会返回一个json对象,要获取指定的参数对应的值
          • 举例:获取json对象中id的值
            • var id = $location.search().id
        • 地址栏的?前需要加#,是angularJS的地址路由的书写形式
    • absUrl()

      • 获取当前完成的url路径
        • 使用方法:$location.absUrl();
    • host()

      • 获取当前url的主机名
        • 使用方法:$location.host();
    • port()

      • 获取当前url端口
        • 使用方法:$location.port();
    • hash()

      • 获取当前url的哈希值
      • 可以修改url的哈希值部分
        • 使用方法:$location.hash();
    • path()

      • 获取当前url的子路径(当前url#后面的内容,不包含参数)
      • 可以修改替换url的哈希值部分($location.path(‘/testreplace’).replace()
        • 使用方法:$location.path();
    • protocol()

      • 获取当前url协议
      • 使用方法:$location.protocol();
    • url()

      • 获取当前url路径(当前url#后面的内容,包含参数和哈希值)
      • 可以修改url的子路径部分
        • 使用方法:$location.url();

$sce

  • 该服务主要用于angularJS的信任政策,在做高亮查询的时候,如果不用该服务做信任,前端页面是不能正确显示内容的

  • 如果要实现对HTML的信任政策,需要用到服务提供的一个方法trustAsHtml,该方法的作用是将一个文本类型的HTML转换成一个解析运行之后的HTML,类似的还有trustAsJs方法

  • var data = "<em style='color:red'>手机</em>";
    $sce.trustAsHtml(data)
    

$interval

  • 该服务是用来处理一些间歇性的事情的

  • 使用方式:

    • $interval(执行的函数,间隔的毫秒数,运行次数);
    • 运行此时可以缺省,即表示无限循环执行该函数
  • cancel

    • 取消执行可以使用cancel方法

    • 使用方式:

      • $interval.cancel(time);
        
  • 举例秒杀服务

    • $scope.second = 10; 
      time= $interval(function(){ 
        if($scope.second>0){ 
      	$scope.second =$scope.second-1;  			
        }else{
      	  $interval.cancel(time); 		  
      	  alert("秒杀服务已结束");
        }
      },1000);
      
  • 我们可以通过$interval来实现倒计时的功能

AngularJS中的变量监听

  • 在Angular中,对于变量的监听使用 s c o p e 中的 scope中的 scope中的watch()方法

  • 使用方式: s c o p e . scope. scope.watch(‘变量’,function(newValue,oldValue){});

    • 	$scope.$watch('entity.goods.category1Id',function(newValue,oldvalue){
      		itemCatService.findByParentId(newValue).success(function(data) {
      			$scope.itemCat2List = data;
      		});
      	});
      

AngularJS的过滤器–filter

  • 使用方式:

    • app.filter("过滤器名",[ '需要引入的服务',function(需要引入的服务){ 
          return function(data){
              
          }
      }]);
      
  • 注意:

    • 第一个需要引入的服务参数需要使用引号括起来,表示该服务需要加载进来
    • function中的参数不需要,因为这个函数需要使用该服务,需要传进来参数
    • data表示过滤前的内容
    • 返回值就是经过过滤后的内容
  • filter的使用

    • <div class="attr" ng-bind-html="item.title | trustHtml"></div>
      
 类似资料: