AngularJS入门教程之MVC架构实例分析


Posted in Javascript onNovember 01, 2016

本文实例讲述了AngularJS的MVC架构。分享给大家供大家参考,具体如下:

MVC应用程序架构最早于1970年起源于Smalltalk语言,后来在桌面应用程序开发中使用较为广泛,如今在WEB开发中也非常流行。MVC的核心思想是?⑹?莸墓芾恚?odel)、业务逻辑控制(Controller)和数据的展示(View)分离开来,使程序的逻辑性和可维护性更强。

对于AngularJS应用来说,视图(View)是DOM(文档对象模型),你可以理解为就是HTML页面。控制器(Controller)是一个用户自定义的JavaScript类。模型数据(Model)存储在对象的属性中。

我们来看下面的代码:

<!DOCTYPE html>
<html ng-app>
<head lang="en">
 <meta charset="UTF-8">
 <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
 <title>tutorial03</title>
</head>
<body>
<div ng-controller="UserController">
 用户名:<input type="text" ng-model="name" placeholder="用户名"/>
 密码:<input type="password" ng-model="pword" placeholder="密码"/>
 <button ng-click="login()">提交</button>
 <p>您输入的用户名:{{name}}</p>
 <p>您输入的密码:{{pword}}</p>
</div>
<script>
 function UserController ($scope,$log)
 {
  $scope.name="admin";
  $scope.pword="123456";
  $log.info( $scope.name);
  $log.info( $scope.pword);
  $scope.login = function()
  {
   alert("登录");
  }
 }
</script>
</body>
</html>

我们在前面一篇《AngularJS入门教程之数据绑定用法示例》代码的基础上进行修改,我们通过ng-controller指令声明一个控制器,名称为UserController,它所在的div开始标签和结束标签之间的部分都由该控制器来管理。

function UserController...为控制器定义部分,这里我们依靠AngularJs依赖注入系统以参数的形式向控制器中注入$scope和$log对象。$scope为模型数据对象,前面有提到过,ng-model的作用就是为$scope对象添加一个属性和表单元素绑定。$log对象用于在浏览器控制台中输出调试信息。

在控制器中可以做一些初始化工作,例如这里我们?⒂没??兔苈胛谋究蛑械哪谌莩跏蓟???dmin”,”123456”。还可用于事件处理,我们通过ng-click指令声明按钮的点击事件处理函数为login(),在控制器中通过$scope.login = function()...进行事件绑定。

在浏览器中运行可以看到效果如下:

AngularJS入门教程之MVC架构实例分析

页面加载时文本框中内容被初始化,点击提交弹出对话框。

AngularJs的控制器的作用域仅限于ng-controller所在的元素开始标签和结束标签之间的部分,为了证明这个结论我们再增加一个控制器,代码如下:

<!DOCTYPE html>
<html ng-app>
<head lang="en">
 <meta charset="UTF-8">
 <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
 <title>tutorial03</title>
</head>
<body>
<div ng-controller="UserController" style="border:#ccc solid 1px;">
 用户名:<input type="text" ng-model="name" placeholder="用户名"/>
 密码:<input type="password" ng-model="pword" placeholder="密码"/>
 <button ng-click="login()">提交</button>
 <p>您输入的用户名:{{name}}</p>
 <p>您输入的密码:{{pword}}</p>
</div>
<br/>
<div ng-controller="InfoContoller" style="border:#ccc solid 1px;">
 个人爱好:<input type="text" ng-model="love" placeholder="个人爱好"/>
 <p>您输入的个人爱好:{{love}}</p>
</div>
<script>
 function UserController($scope,$log)
 {
  $scope.name="admin";
  $scope.pword="123456";
  $scope.login = function()
  {
   alert("登录");
  }
 }
 function InfoContoller($scope,$log)
 {
  $scope.love="足球";
  $log.info($scope.name);
  $log.info($scope.pword);
  $log.info($scope.love);
 }
</script>
</body>
</html>

由于name和pword不是在InfoContoller控制器中定义的,我们在控制台中输出$scope.name和$scope.pword显示为undefined.

AngularJS入门教程之MVC架构实例分析

AngularJS源码可点击此处本站下载

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
javascript 动态参数判空操作
Dec 22 Javascript
javscript对象原型的一些看法
Sep 19 Javascript
50款非常棒的 jQuery 插件分享
Mar 29 Javascript
Jquery 切换不同图片示例代码
Dec 05 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
Sep 12 Javascript
js老生常谈之this,constructor ,prototype全面解析
Apr 05 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
May 28 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
Jul 09 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
如何优雅地在Node应用中进行错误异常处理
Nov 25 Javascript
在vue项目中利用popstate处理页面返回的操作介绍
Aug 06 Javascript
原生js实现照片墙效果
Oct 13 Javascript
bootstrap table复杂操作代码
Nov 01 #Javascript
bootstrap flask登录页面编写实例
Nov 01 #Javascript
JS弹出窗口的运用与技巧大全
Nov 01 #Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 #Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
Nov 01 #Javascript
AngularJS入门教程之数据绑定用法示例
Nov 01 #Javascript
jQuery动态生成Bootstrap表格
Nov 01 #Javascript
You might like
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
浅析PHP安装扩展mcrypt以及相关依赖项(PHP安装PECL扩展的方法)
2013/07/05 PHP
百度实时推送api接口应用示例
2014/10/21 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
js 将json字符串转换为json对象的方法解析
2013/11/13 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
jQuery中的100个技巧汇总
2016/12/15 Javascript
JavaScript仿支付宝6位数字密码输入框
2016/12/29 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
Vue使用JSEncrypt实现rsa加密及挂载方法
2020/02/07 Javascript
Python三元运算实现方法
2015/01/12 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Linux下python3.7.0安装教程
2018/07/30 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
python如何删除列为空的行
2020/07/17 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
西尔斯百货官网:Sears
2016/09/06 全球购物
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
计算机毕业生求职信
2014/06/10 职场文书
水知道答案观后感
2015/06/08 职场文书
感恩的心主题班会
2015/08/12 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
Django给表单添加honeypot验证增加安全性
2021/05/06 Python
Android基于Fresco实现圆角和圆形图片
2022/04/01 Java/Android