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 相关文章推荐
利用json获取字符出现次数的代码
Mar 22 Javascript
jQuery结合HTML5制作的爱心树表白动画
Feb 01 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
May 07 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
Mar 03 Javascript
百度地图JavascriptApi Marker平滑移动及车头指向行径方向
Mar 13 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
Oct 20 Javascript
实现div内部滚动条滚动到底部和顶部的代码
Nov 15 Javascript
Router解决跨模块下的页面跳转示例
Jan 11 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
Nov 06 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
Mar 14 Javascript
jQuery实现广告显示和隐藏动画
Jul 04 jQuery
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
php获取当前url地址的方法小结
2017/01/10 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
JS实现QQ图片一闪一闪的效果小例子
2013/07/31 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
在css加载完毕后自动判断页面是否加入css或js文件
2014/09/10 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
浅谈jQuery的offset()方法及示例分享
2015/07/17 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
Bootstrap基本样式学习笔记之表格(2)
2016/12/07 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
javascript实现复选框全选或反选
2017/02/04 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
vue-cli中实现响应式布局的方法
2021/03/02 Vue.js
python3编写C/S网络程序实例教程
2014/08/25 Python
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python opencv实现运动检测
2018/07/10 Python
使用python判断jpeg图片的完整性实例
2019/06/10 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Keras使用ImageNet上预训练的模型方式
2020/05/23 Python
Python使用pickle进行序列化和反序列化的示例代码
2020/09/22 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
使用css3实现的tab选项卡代码分享
2014/12/09 HTML / CSS
html5定位并在百度地图上显示的示例
2014/04/27 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
优秀的教师个人的中文求职信
2013/09/21 职场文书
药剂学专业应届生自荐信
2013/09/29 职场文书
十八大标语口号
2014/10/09 职场文书
2015年底工作总结范文
2015/05/15 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
Linux系统下安装PHP7.3版本
2021/06/26 PHP