AngularJS之Scope及Controller(一)
前言
之前有接触过基本的AngularJS,未过多涉及,于是乎本系列我们来着重讲讲AngularJS,对AngularJS中重要的几大内容进行梳理并进行一些小的例子的书写。在之前项目过程中用到过avalon,但是avalon并未被广泛使用也就放弃了,至于孰最轻量,性能更好作为非专业的我就不妄下结论,lz只明白一点,业界最流行什么前端框架,招聘大部分要求会哪些框架,lz才会去学习,当然其中的乐趣也是油然而生,每一次敲代码的过程好似在浩瀚大海中探幽一番,别有一番滋味。
简短介绍
AngularJS也是一种MVVM前端框架,其中的路由、指令、服务、工厂等。它帮助了我们开发前端UI并简化了一些繁琐的过程,同时它也恰如其分的支持客户端的单元测试。它涉及到Model、View、Controller。当AngularJS应用程序被启动时,其Model、Controller、View以及HTML文档都会被加载到用户的设备上,最终运行在用户设备的硬件中。至于Model、View、Controller这三者之间的联系,我们看如下图便知。
HelloWorld
貌似每学一门新的语言或者框架首先都会想到的是和这个世界打个招呼,下面我们利用AngularJS和这个世界来打个招呼。
(1)页面定义模块然后获取模块
var app = angular.module('myApp', []);
(2)定义控制并获取该控制器进行对应的赋值
app.controller('ctrl', ['$scope', function($scope){ $scope.greeting = {text:"Hello"}; }])
(3)UI页面
<html ng-app="myApp"> <head> <title></title> <script type="text/javascript" src="Scripts/angular.min.js"></script> <script type="text/javascript" src="app.js"></script> <script type="text/javascript" src="HelloWorld.js"></script> </head> <body ng-controller="ctrl"> {{greeting.text}},World </body> </html>
最终结果如下:
(1)模块:AngularJS中的module作为Angular应用程序的入口点。那模块从何而来呢?这里不做过多探讨,涉及到依赖逐入的概念。依赖逐入是AngularJS中主要的优点之一,在DI作为一种设计模式被定义在应用程序中作为配置的一部分,如此一来,无需我们手动去创建,当应用程序首次启动时,DI会自动加载模块依赖。
(2)模型类:拿MVC类比,我们通过模型来获取数据,此时我们必须定义模型类,同理在大多数JavaScript客户端框架中也会要求我们创建模型类,但是在AngularJS中这种情况不会发生,在AngularJS中有一个scope的对象。$rootScope是AngularJS程序中的父Scope。
(3)控制器:在AngularJS中控制器作为视图和model的桥梁,在这个控制器这个区域中我们可以放置一个视图的所有业务逻辑。当应用程序中的业务逻辑被多个控制器所使用时,此时我们应该将业务逻辑放置在AngularJS中的Service(服务)中,当我们需要用到这些业务逻辑时,我们需要在DI的帮助下来获取这些服务。
下面一张图简短的概括了视图(View)、$scope、控制器(Controller)之间的关系。
$scope与Controller
我们通过一个例子来看这二者之间的关系:
UI
<html ng-app="myApp"> <head> <title></title> <script type="text/javascript" src="Scripts/angular.min.js"></script> <script type="text/javascript" src="app.js"></script> <script type="text/javascript" src="scopeController.js"></script> </head> <body> <div ng-controller="ctrlName"> <input type="text" width="200px" ng-model="name" /> <h2>Your Name : {{name}}</h2> </div> </body> </html>
JS
app.controller('ctrlName', function ($scope) {
$scope.name = '';
});
我们看看演示效果:
Controller as语法
对于上述我们可以通过另外一种方式实现,在AngularJS 1.1.5版本后开始支持控制器as语法。我们给出代码看看。
UI
<html ng-app="myApp"> <head> <script type="text/javascript" src="Scripts/angular.min.js"></script> <script type="text/javascript" src="app.js"></script> <script type="text/javascript" src="myCtrl.js"></script> <title></title> </head> <body ng-controller="myCtrl as u"> <h2>{{u.username}}</h2> <h1>请输入你的名字 :</h1> <input type="text" width="200px" ng-model="u.name" /> <h2>你的名字是 : {{u.name}}</h2> </body> </html>
JS
app.controller('myCtrl',function(){ var self = this; self.name = ""; self.username = "xpy0928"; })
结果演示:
总结
本节我们简短的介绍了AngularJS以及一些基本概念。下节再见。

为了方便大家在移动端也能看到我分享的博文,现已注册个人公众号,扫描上方左边二维码即可,欢迎大家关注,有时间会及时分享相关技术博文。
感谢花时间阅读此篇文章,如果您觉得这篇文章你学到了东西也是为了犒劳下博主的码字不易不妨打赏一下吧,让楼主能喝上一杯咖啡,在此谢过了!
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
本文版权归作者和博客园共有,来源网址:http://www.cnblogs.com/CreateMyself)/欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构