Angular 基础知识以及demo样例
1. 四大特征
这些特点同服务段springmvc 完全一致
mvc 设计模式
双向绑定
依赖注入
模块化设计
2. 初始化指令,双向绑定
- <!--angular 在body内部都会被识别-->
- <body ng-app ng-init="mycore='100'">
- <!--双向绑定 model 代表数据-->
- 你考试的总分是: <input ng-model="mycore" /> <br />
- {{mycore}}分,还需要配继续努力
- </body>
3. 控制器
- <head>
- <Meta charset="UTF-8">
- <script src="angular/angular.min.js"></script>
- <script src="angular/jquery-2.2.3.min.js"></script>
- <title></title>
- <script>
- /*定义了一个模块*/
- var app = angular.module('mycore',[])
- /*模块控制器 $scope model view 直接的媒介*/
- app.controller('myController',function($scope){
- $scope.add=function(){
- return parseInt($scope.yuwen)+parseInt($scope.shuxue);
- }
- });
- </script>
- </head>
- <!--angular 在body内部都会被识别-->
- <body ng-app="mycore" ng-controller="myController" >
- 语文分数:<input ng-model="yuwen" /> <br />
- 数学分数:<input ng-model="shuxue" /> <br />
- 总共分数: {{add()}}
- </body>
上图代码变量个人理解
4. 循环数组-基本数据类型
- <!DOCTYPE html>
- <html>
- <head>
- <Meta charset="UTF-8">
- <script src="angular/angular.min.js"></script>
- <title></title>
- <script>
- var app = angular.module('mycore',[]);
- app.controller("mycontroller",function($scope){
- //$scope.list=[99,1,11,9,23,99,3]; /*数据不可以重复,内部存储同时int string类型*/
- $scope.pp=["北京","你","好",22,66,11]; //定义在控制器中
- })
- </script>
- </head>
- <!--angular 在body内部都会被识别-->
- <body ng-app="mycore" ng-controller="mycontroller" ng-init="findAll()">
- <table>
- <tr> <td>数学</td></tr>
- <tr ng-repeat="item in pp">
- <td>{{item}}</td>
- </tr>
- </table>
- </html>
- $scope.pp=[“北京”,”你”,”好”,11]; //定义在控制器中
- ng-repeat=”item in pp” // item代表每一个成员变量,{{item}}
5. 循环数组对象-基本数据类型
内部的数据类型类似于字符串,最后一个对象的数据“,” 不用加 , name属性没有加双引号
- $scope.list=[
- {name:'张三',shuxue:100,yuwen:93},{name:'张三',{name:'王五',shuxue:77,yuwen:56}
- ]
-
- <tr ng-repeat="item in list">
- <td>{{item.name}}</td>
- <td>{{item.shuxue}}</td>
- <td>{{item.yuwen}}</td>
- </tr>
6. 内置服务
其实这个内置服务就是在angular中封装了aJax,从而实现同服务端的交互
- var app = angular.module("app",[]);
- //$scope,$http同时都被依赖注入,控制器内部的所有方法都可以调用
- app.controller("mycontroller",function($scope,$http){
- $scope.findAll=function(){
- //服务端的内部交互
- $http.get('data.json').success(
- //如果response返回的json字符串,list内部存储的数组对象
- //如果response 返回的是一个object,list就是一个对象
- //如果response 返回的是基本数据类型, list就是一个基本数据类型
- function(response){
- $scope.list=response;
- }
- )
- }
- })
7. 自定义服务
自定义服务就是将控制层中内置服务提取到service层,可以做到高内聚,低偶合,可以理解为一个抽取的过程,在control层调用服务的时候别忘记,进行注入 ,最简单的理解就是让多个control层去调用相同的服务
- var app = angular.module("app",[]);
- app.service('myservice',function($http){
- //内置服务注册的时候要用this
- this.find=function(){
- return $http.get('data.json');
- }
- })
- //服务不要忘记注入
- app.controller("mycontroller",myservice){
- //控制层定义方法的时候要用$scope
- $scope.findALL=function(){
- myservice.find().success(
- function(response){
- alert("response")
- $scope.list=response;
- }
- )
- }
- })
8. 控制器继承
- 就是将控制层内相同的代码进行向上抽取
第一步 建立父控制器,这些控制器的内容在其他控制层也被用到,因此向上抽取而成立
- //基本控制层
- app.controller('baseController',function($scope){
- //重新加载列表 数据
- $scope.reloadList=function(){
- //切换页码
- $scope.search( $scope.paginationConf.currentPage,$scope.paginationConf.itemsPerPage);
- }
- //分页控件配置
- $scope.paginationConf = {
- currentPage: 1,totalItems: 10,itemsPerPage: 10,perPageOptions: [10,20,30,40,50],onChange: function(){
- $scope.reloadList();//重新加载
- }
- };
- $scope.selectIds=[];//选中的 ID 集合
- //更新复选
- $scope.updateSelection = function($event,id) {
- if($event.target.checked){//如果是被选中,则增加到数组
- $scope.selectIds.push( id);
- }else{
- var idx = $scope.selectIds.indexOf(id);
- $scope.selectIds.splice(idx,1);//删除
- }
- }
- })
第二步 修改子类控制器
- //1.这个控制器需要注入
- app.controller('brandController',$controller,brandService){
- //2. 就这么个格式集成父类控制器
- $controller('baseController',{$scope:$scope});//继承
- //读取列表数据绑定到表单中
- $scope.findAll=function(){
- brandService.findAll().success(
- function(response){
- $scope.list=response;
- }
- );
- }
2017.9.23 增加内容
判断逻辑
- 在前端代码增加判断的业务逻辑,当等于3时候不会显示下面的 button内容
在ng-click中执行方法用“ ; ”隔开
- <span ng-if="grade!=3">
- <button type="button" class="btn bg-olive btn-xs" ng-click="setGrade(grade+1);selectList(entity)">查询下级</button>
- </span>
*ng-options 属性可以在表达式中使用数组或对象来自动生成一个 select 中的 option 列表。 ng-options 与 ng-repeat 很相似,很多时候可以用 ng-repeat 来代替 ng-options。但是 ng-options 提供了一些好处,例如减少内存提高速度,以及提供选择框的选项来让用户选择。
- <select class="form-control"
- ng-model="entity.goods.category1Id"
- ng-options="item.id as item.name for item in itemCat1List">
- </select>