AngularJS入门案例

动态交通条件下路面立体重建技术解析与应用 立体视觉技术通过多相机系统捕捉物体三维信息,其核心原理是基于视差计算实现深度感知。在计算机视觉领域,立体匹配算法与三维重建技术结合,可高效获取高精度空间数据。针对交通场景的特殊性,动态干扰处理与全视场拼接算法成为技术关键,其中基于语义分割的标线对齐方案显著提升了路面检测精度。该技术已成功应用于高速公路智能监测系统,实现毫米级精度的路面裂缝与车辙识别,为道路预防性养护提供数据支撑。通过融合IMU传感器数据与深度学习模型,系统在80km/h车速下仍保持94.7%的特征匹配率,大幅提升交通基础设施检测效率。 阅读详情

**AngularJS入门**

​    AngularJS核心的特性就是:MVC模式、模块化、双向绑定、依赖注入等特性。利用AngularJS,我们能很方便的实现HTML页面和后端的数据交互,让我们逐步脱离JSP页面;HTML+Javascript+AJAX技术让我们能够做出来更轻的Web应用。

<!--more-->

# AngularJS四大特征

## MVC模式



**Model:**数据,相当于angular中的变量($scope.Xxx)(这个变量可以是单一的变量,也可以是实体对象)。

**View:**数据的呈现:HTML+Directive(指令)

**Controller:**操作数据,就是function方法,实现数据的增删改查操作等。

## 双向绑定

​    AngularJS第二个重要特性就是**双向绑定**,即使用`AngularJS`绑定的变量,能够在`AngularJS`的MVC三层模式中动态的改变。视图层(HTML)绑定的变量传递到控制层(function),控制层能够获取到绑定变量并传递给后端映射进行处理,处理后的数据通过`AngularJS`获取到并仍能够返回到视图层页面,改变原有视图层的数据。

## 依赖注入

​    Spring中的依赖注入(DI)思想,在`AngularJS`中同样存在。即某个对象依赖的其他对象无需自己手动注入,在该对象创建的时候,起依赖对象就由框架自动创建并注入进来。同后端我们将Service层注入到Controller层,并不需要我们自己手动`new`依赖对象,即由框架帮我们完成了注入。

## 模块化设计

高内聚低耦合法则

1. 官方提供的模块: ng、ngRote、ngAnimate
2. 用户自定义的模块: angular.module('模块名',[])

# 案例

## 表达式

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Angular入门案例</title>
</head>
<body ng-app>
    {{1024+1024}}
</body>
<script src="../static/plugins/angular/angular.min.js"></script>
</html>
```



1. 使用`AngularJS`首先要引入angular的JS文件。
2. `AngularJS`的表达式用法就是:`{{表达式}}`,这个表达式也可以是由`AngularJS`绑定的对象。
3. `<body>`中的`ng-app`指令:告诉子元素,以下的其他`AngularJS`指令都会被`AngularJS`识别。
4. `ng-app`指令定义了`AngularJS`应用程序的根元素。
5. `ng-app`指令在网页加载完毕时会自动初始化应用程序。

## 双向绑定

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Angular入门案例</title>
</head>
<body ng-app>
    姓名:<input ng-model="name"/><br/>
    hello: {{name}}
</body>
<script src="../static/plugins/angular/angular.min.js"></script>
</html>
```



`ng-model`用于绑定变量,被绑定的变量能够在`AngularJS`中动态的改变数据。

**其他指令**

     1. `ng-init=""` 用于初始化数据。
    2. `ng-click=""` 元素被点击时被触发,可以是一个对应的`AngularJS`控制层方法
    3. `ng-controller=""` 用于指定该视图层使用的控制器名称。
    4. ...

## 控制器

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Angular入门案例</title>
</head>
<body ng-app="testApp" ng-controller="testController">
    a: <input ng-model="a"><br/>
    b: <input ng-model="b"><br/>
    <button ng-click="test()">计算</button> a+b: {{result}}
</body>
<script src="../static/plugins/angular/angular.min.js"></script>
<script type="text/javascript">
    //声明一个testApp模块
    var app = angular.module('testApp',[]);
    //定义控制器
    app.controller('testController',function($scope){
        $scope.test = function(){
            $scope.result = parseInt($scope.a) + parseInt($scope.b);
        }
    });
</script>
</html>
```



1. 首先在`<body>`中标识使用的`ng-app`对象和`ng-controller`对象。
2. 使用`angular.module('模块名称',[])`的方式创建`angularJS`的模块对象。
3. 使用`模块名.controller('控制器名',function(){})`的方式定义控制器,写对应的业务代码。同样`模块名.service('服务层名',function(){})`的方式创建服务器。
4. `$scope`使用贯穿了整个`AngularJS`应用,它在`Angular`控制层和视图层建立了一个通道,基于作用域视图在修改数据时会立刻更新`$scope`,同样的`$scope`发生改变时也会立刻重新渲染视图。

## 遍历

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Angular入门案例</title>
</head>
<body ng-app="testApp" ng-controller="testController">
    <table>
        <tr>
            <td>编号</td>
            <td>名称</td>
        </tr>
        <tr ng-repeat="entity in list">
            <td>{{entity.id}}</td>
            <td>{{entity.name}}</td>
        </tr>
    </table>
</body>
<script src="../static/plugins/angular/angular.min.js"></script>
<script type="text/javascript">
    //声明一个testApp模块
    var app = angular.module('testApp',[]);
    //定义控制器
    app.controller('testController',function($scope){
        $scope.list = [{id:1,name:'张珊'}, {id:2,name:'小菜'}];
    });
</script>
</html>
```



如上我们使用`ng-repeat`指令即可实现数据的遍历,和JSP中的`<forEach>`标签是不是有些雷同呢?如上其实我们是将需要遍历的数据存入到`AngularJS`绑定的对象`list`中,然后使用`ng-repeat`指令遍历这个对象获取数据。

**注意:** 在`list`对象中定义的数据格式,`AngularJS`本身就规定了你的对象中数据必须是这种格式的(当然你可以使用JSON格式数据),**但是**此处定义的数据并不是标准的JSON格式数据,但是这两种格式数据都能被`AngularJS`识别。

标准的JSON数据格式:

```java
{"id": 1, "name": "张珊"}
```

JSON数据格式规定了其`key`和`value`都必须`""`隔开,使用`''`也不行。



# 代码分层

## 思路

在上面我们一直强调`AngularJS`的MVC设计模式,那么同后端,将对应的代码进行分层不是更方便维护嘛。所以我们将`AngularJS`代码分为三层:

* HTML(视图层):即页面的HTML代码,其中包含了`AngularJS`标识的变量。
* Controller(控制层):即存放主要的业务逻辑的代码(各种function()方法)。
* Service(业务层):这个业务层和我们后端中的业务层不同,因为我们将主要的业务逻辑代码存放到了Controller层,所以这里的`Service`层存放的是和后端交互的请求路径。

即我们通过在HTML(视图层)绑定变量或对象,在Controller中获取到(通过`$scope`获取),调用`Service`层对应的请求路径方法,通过`Controller`层中的请求回调方法(`.success(function(response){})`),获取到请求响应的数据(`response`),然后利用`AngularJS`的双向绑定特性将数据赋值到HTML(视图层)的指定区域。

## 目录结构



如上,为了方便,我将文件都放在一个`test`文件夹中,实际中,我们可以分别建立`service`,`controller`文件夹存放对应的代码。其中:

* `data.json`是我们模拟请求后端而写的`json`格式数据(**注意:**实际中我们后端的请求也要返回`JSON`格式数据)。
* `angular-base.js`存放了创建的`angularJS`模块方法,即`var app = angular.module('模块名',[])`。
* `angular-controller.js`存放`controller`层的逻辑代码,通过`app.controller('控制器名',function(){})`声明。
* `angular-service.js`存放`service`层对应的代码,通过`app.service('业务层名',function(){})`声明。
* `angular-demo.html`视图层,主要是页面实现的代码,其中包含被`angular`绑定的变量,并且这些被绑定的对象需要在`ng-app="模块名"`、`ng-controller="控制器名"`的标识的区域下(父层节点上,通常我们将其定义在`<body>`体中)。

## 模拟的后端相应的数据

**data.json**

```javascript
[
  {"id": 1, "name": "涂陌"},
  {"id": 2, "name": "TyCoding"},
  {"id": 3, "name": "大白"}
]
```



## 自定义angular模块

**angular-base.js**

```javascript
var app = angular.module('baseApp',[]);
```



## 业务层

**angular-service.js**

```javascript
//定义业务层
app.service('testService', function($http){
    this.findAll = function(){
        return $http.get('data.json');
    }
});
```

其中包含了`AngularJS`内置的服务`$http`,可以让我们方便的请求后端,包含`$http.get()`,`$http.post()`等请求方式。



## 控制层

**angular-controller.js**

```javascript
//定义控制器
app.controller('testController', function ($scope, $controller, testService) {
    //伪继承
    //$controller('baseController',{$scope:$scope});

    //获取数据
    $scope.findAll = function(){
        testService.findAll().success(
            function(response){
                $scope.list = response;
            }
        );
    }
});
```

1. 在上面我们已经解释了`controller`层声明的方式,就是`app.controller()`方式,其中`function($scope,$controller,testService)`是在此`controller`层需要使用的对象,其中`testService`就体现出了angular的依赖注入思想,`testService`其实是`service`层的名称,当在`controller`中需要使用这个`service`的对象,直接在声明`controller`时就因入其名称即可,angular会自动帮我们将`service`对象注入到`controller`中。
2. 这里我们再注释中添加了伪基层的实现代码。在`AngularJS`中也存在继承的思想,但是仅仅是伪继承,因为可以看到`AngularJS`的继承就是将`baseController`中的`$scope`对象赋值给当前控制器中`$scope`。这样,在当前的控制器中就能使用`baseController`中定义的对象或者方法了。
3. 在调用了`testService`中的方法`findAll()`后,`service`请求相应的数据都存在在回调函数`.success(function(response){})`的`response`中,我们通过`$scope.list`获取到页面中绑定的对象,并将当前相应的数据赋值给`list`中,视图层(HTML)就能通过取JSON格式数据的方式将数据取出来。

## 视图层

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Angular入门案例</title>
</head>
<body ng-app="baseApp" ng-controller="testController" ng-init="findAll()">
    <table>
        <tr>
            <td>编号</td>
            <td>名称</td>
        </tr>
        <tr ng-repeat="entity in list">
            <td>{{entity.id}}</td>
            <td>{{entity.name}}</td>
        </tr>
    </table>
</body>
<script src="../static/plugins/angular/angular.min.js"></script>
<script src="../static/plugins/jquery/jquery-3.3.1.min.js"></script>
<script src="../test/angular-base.js"></script>
<script src="../test/angular-service.js"></script>
<script src="../test/angular-controller.js"></script>
</html>
```

在视图层中通过`ng-repeat=""`来遍历后端存储了响应数据的对象`list`,通过`{{entity.id}}`的方式将数据取出来,其实就是取JSON数据的方式,因此我们也必须将请求响应的封装层JSON格式。





这样我们就实现和后端的交互,并将数据回显到了页面上,是不是比JSP要方便快捷很多呢?

## 终

同上上面的学习,我们已经了解到了怎样在HTML页面上利用`AngularJS`完成和后端数据的交互。下面大家来看一下我在实际开发中实现的常见的增删改查的操作:



**页面**





**controller层**





**service层**





**实际效果**







<br/>

# 交流

如果大家有兴趣,欢迎大家加入我的Java交流群:671017003 ,一起交流学习Java技术。博主目前一直在自学JAVA中,技术有限,如果可以,会尽力给大家提供一些帮助,或是一些学习方法,当然群里的大佬都会积极给新手答疑的。所以,别犹豫,快来加入我们吧!

<br/>

# 联系

If you have some questions after you see this article, you can contact me or you can find some info by clicking these links.

- [Blog@TyCoding's blog](http://www.tycoding.cn)
- [GitHub@TyCoding](https://github.com/TyCoding)
- [ZhiHu@TyCoding](https://www.zhihu.com/people/tomo-83-82/activities)
Angular js简单tab切换小例子 两个简单tab切换 可用 适合新手学习 立即下载

相关推荐

angular-presentation:不同角度功能的小型展示案例 - 主要是指令

angular-seed — AngularJS 应用程序的种子 这个项目是一个典型的 Web 应用程序的应用程序框架。 您可以使用它来快速引导您的 angular webapp 项目和这些项目的开发环境。 种子包含一个示例 AngularJS 应用程序,并预先配置为安装 Angular 框架和一堆开发和测试工具,以获得即时的 Web 开发满足感。 种子应用程序没有做太多事情,只是展示了如何将两个控制器和视图连接在一起。 入门 要开始使用,您可以简单地克隆 angular-seed 存储库并安装依赖项: 先决条件 您需要 git 来克隆 angular-seed 存储库。 您可以从获取 git。 我们还使用了许多 node.js 工具来初始化和测试 angular-seed。 您必须安装 node.js 及其包管理器 (npm)。 您可以从获取它们。 克隆角种子 使用克隆 angul

Angular项目的创建及案例解释

初学angular 其实前端的难度本身不大 但是一些框架在自主理解上还是有一些不好理解的 所以如果可以多向别人请教一下 或者自行百度搜索 毕竟每个人的理解程度不同 建议查看有道云笔记的链接 有些格式和图片不能同步 http://note.youdao.com/noteshareid=cbe3907fea4268015d879ba5c463147d&su...

Welcome小坦克实验基地 1384

ClearML中文文档实战:从安装到第一个实验的保姆级教程

本文提供ClearML从零开始的实战指南,涵盖核心组件理解、Python SDK安装、服务器配置及首个自动化实验的完整流程。通过改造PyTorch训练脚本的实例,详细演示了如何利用ClearML自动记录实验参数、指标与模型,实现机器学习实验的可复现性与高效管理,并简要介绍了进阶的自动化工作流。

weixin_29216049的博客 398

angularjs 实例_AngularJS服务示例教程

angularjs 实例Today we will look at one of the important angular concepts called AngularJS Services. In the previous tutorial, we looked atAngularJS routing feature with a simple example. 今天,我们将介绍一个名为A...

从零开始的教程世界 347

手把手教你用Node.js模拟大麦APP下单请求(含滑块验证处理)

本文详细解析了如何使用Node.js模拟大麦APP下单请求的全流程,包括接口逆向、滑块验证处理和签名算法逆向等关键技术。通过实战案例和代码示例,帮助开发者掌握移动端API调用的核心要素,如动态参数构造、安全验证突破等,提升自动化下单的成功率和效率。

weixin_42569329的博客 353

Qt 5.9.1 32位下,手把手搞定周立功CAN二次开发库的加载与配置(含常见错误排查)

本文详细介绍了在Qt 5.9.1 32位环境下配置周立功CAN二次开发库的完整流程,包括环境准备、项目配置、常见错误排查及性能优化建议。特别针对MinGW 32bit环境,提供了.pro文件的精准配置和DLL部署策略,帮助开发者快速解决库文件匹配、编译报错和运行时问题,实现高效的CAN总线通信开发。

weixin_28717431的博客 356

Angular简单例子

Angular应用 我的笔记 保存 清空 剩余字数{{100-message.length}} angular.module('myapp',[]).controller('myctrl',function($scope){ $scope.message=""; $scope.save=function(){alert("note saved")}; $scope.c

zylzl123的专栏 545

在windows上,在WSL 2(windows subsystem linux) 里一步步安装vLLM

本文介绍了在Windows系统上通过WSL2配置GPU加速的AI开发环境的完整流程。主要包括四个步骤: 1)安装WSL2并配置Ubuntu环境; 2)安装NVIDIA驱动和CUDA工具包; 3)搭建Python虚拟环境并安装vLLM; 4)验证环境并启动AI模型服务。

2601_96126911的博客 421

angular高仿微信聊天界面|NG2聊天IM社交|angular仿微信表情输入框

最近一直在学习angular技术,一顿研究下来发现并没想象的困难,不过倒是采坑了不少,后面通过网络及社区都解决了。之前就有使用vue.js react做过一些项目实战。今天要给大家分享的是angular聊天室案例。 项目简述: 使用angular8+angular-cli+angular-router+ngrx/store+rxjs+webpack+node+wcPop等技术开发的高仿微信界面...

码农ICoding 1917

串口通信的性能瓶颈分析:如何提高数据吞吐量和降低延迟

摘要: 串口通信在高频或大数据场景下存在吞吐量不足、延迟高、丢帧等问题,主要瓶颈包括波特率限制、缓冲区不足、CPU轮询延迟等。优化策略包括:提升波特率至硬件上限、增大缓冲区、采用异步I/O(如ReadAsync)减少线程切换,使用二进制协议降低解析开销。实时性方面需启用硬件流控、批量发送数据,并优化线程优先级。跨平台适配需区分Windows/Linux的缓冲区设置与异步机制。性能测试可通过吞吐量、延迟及回环测试验证优化效果,核心原则是硬件匹配、异步处理、协议优化与跨平台适配。(150字)

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 980

Openclaw错误分析与解决方案之:Agent couldn’t generate a response.

Openclaw错误分析与解决方案之:Agent couldn't generate a response. Note: some tool actions may have already been executed — please verify before retrying.

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1315

AngularJS入门级小案例

一个简单的AngularJS入门小案例 知识点:双向数据绑定 控制器作用 &lt;!DOCTYPE html&gt; &lt;html lang="en" ng-app="HelloApp"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta name="viewport" cont

崔振凯的博客 332

【RT-DETR涨点改进】独家创新改进篇 | AAAI2024 | RT-DETR引入CFBlock增强对长程依赖和全局语义信息的建模能力,有助于提升复杂场景下小目标、遮挡目标的检测精度

本文给大家介绍在RT-DETR中引入CFBlock模块,能够有效提升模型对长程依赖和全局语义信息的建模能力,在保持轻量化和高效推理的基础上增强特征表达力,特别有助于提升复杂场景下小目标、遮挡目标的检测精度,从而实现更优的精度与速度平衡。

Ai缝合怪、助力小伙伴高效发论文 260

AngularJS --- 简介及入门案例

一、AngularJS简介 AngularJS  诞生于2009年,由Misko Hevery 等人创建,后为Google所收购。是一款优秀的前端JS框架,已经被用于Google的多款产品当中。AngularJS有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、依赖注入等等。   AngularJS 是一个 JavaScript框架。它是一个以 JavaScript 编写的库。...

__静禅__ 425

基于深度学习的茶叶等级检测识别系统:YOLOv10 + UI界面 + 数据集

YOLOv10是YOLO系列的最新版本,继承了YOLO模型的优点,并对速度和精度进行了优化。YOLOv10在目标检测中使用卷积神经网络(CNN)作为基础,通过改进网络结构和优化训练策略,实现了在更低的延迟下进行高精度的目标检测。本文详细介绍了基于YOLOv10的茶叶等级检测与识别系统的设计与实现过程。我们从数据集准备、模型训练与推理、UI界面设计等多个方面进行了详细讲解,并给出了相应的代码实现。通过本系统,我们可以高效地自动检测茶叶的等级,并通过UI界面直观地展示结果。

YOLO 764

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

通过angularJS官方案例快速入门

官方案例-angular-phonecat angularJS官方提供了一个官方案例给大家进行循序渐进的学习,但是如果之前没有接触过node.js以及git的同学这个案例拿着也无从下手…这里就介绍一下怎么打开这个案例吧准备工作:1.Git 2.nodejs 3.npm 4.bower 5.http-server 如果需要成功的一步一步的学习这个案例至少需要安装上面的5个东西,当然2-5都是...

weixin_34004576的博客 117

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

AngularJS服务入门案例简介

angularJS服务内容简介

xyphf的博客 641

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

angularjs入门案例 新玩具-中午吃神马

angularjs 是一个用来开发单页webAPP的mvv框架,由Google 开发,如果不知道angularjs 的可以先google 下   按照angularjs 的开发一般顺序先搭建好需要做的视图,然后准备数据,最后绑定事件处理业务逻辑,操作DOM事件用户和程序的交互。   1、开始搭建界面,使用bootstrap作为UI框架,可以快速搭建清爽的界面效果,顺便引入 angular.

LuckySummer* 788

2013年AngularJS学习资源精选

jQuery源码解析(架构与依赖模块)  深入浅出 Java 多线程  MVC架构模式分析与设计  专为开发者打造的Linux学习视频教程 本文由 伯乐在线 - 陈 鑫伟 翻译。未经许可,禁止转载! 英文出处:SyntaxSpectrum。欢迎加入翻译小组。 2014年被认为是AngularJS之年,现在是时候总结一下2013年的AngularJS优秀学习资源,希望能帮

jinyeweiyang的专栏 819

angularjs 学习_7本书免费学习AngularJS

因此,您一直在关注这个Angular系列(如果您还没有,请从此处开始),到某个程度,您对使用Angular甚至使用它构建应用程序有些满意。 要在研究项目时获得更完整的指导,我们可以随时阅读电子书。 电子书为您提供了一种结构化和组织化的方法来学习新主题 ,AngularJS也不例外。 然而,如今电子书最好的是,可以在实践练习中大量补充电子书, 以帮助您加强对某些方面的理解和理解。 让我们...

cune1359的博客 556

angularJS相关网址

快速搭建Web环境 Angularjs + Express3 + Bootstrap3 AngularJS入门教程——AngularJS中文社区提供

tanyanzimo的博客 316

《AngularJS入门与进阶》图书简介

一、图书封面二、图书CIP信息图书在版编目(CIP)数据AngularJS入门与进阶 / 江荣波著. – 北京 : 清华大学出版社, 2017 ISBN 978-7-302-46074-9 Ⅰ. ①A… Ⅱ. ①江… Ⅲ. ①超文本标记语言-程序设计 Ⅳ. ①TP312.8 中国版本图书馆CIP数据核字(2017)第004868号三、书籍目录第一部分:入门篇 4 第1章 走进Angu

Coding... 4934
上一篇: (三)Spring的AOP思想
下一篇: (四)Spring中的事务管理
TyCoding
博客等级 码龄9年 316粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值