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
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
js解析与序列化json数据(一)json.stringify()的基本用法
Feb 01 Javascript
javascript字符串替换及字符串分割示例代码
Dec 12 Javascript
详解AngularJS 模态对话框
Apr 07 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 Javascript
js简单实现图片延迟加载的方法
Jul 19 Javascript
jQuery实现文档树效果
Feb 20 Javascript
JS作用域链详解
Jun 26 Javascript
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
JS/HTML5游戏常用算法之追踪算法实例详解
Dec 12 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
Dec 04 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
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
PHP为表单获取的URL 地址预设 http 字符串函数代码
2010/05/26 PHP
PHP array 的加法操作代码
2010/07/24 PHP
php实现aes加密类分享
2014/02/16 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
PHP读取word文档的方法分析【基于COM组件】
2017/08/01 PHP
原生javascript获取元素样式属性值的方法
2010/12/25 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
每天一篇javascript学习小结(Array数组)
2015/11/11 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
Angular封装搜索框组件操作示例
2019/04/25 Javascript
详解微信小程序开发(项目从零开始)
2019/06/06 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
[01:14:19]NAVI vs Mineski 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
解决Mac安装scrapy失败的问题
2018/06/13 Python
用Python逐行分析文件方法
2019/01/28 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
Python Django 实现简单注册功能过程详解
2019/07/29 Python
通过Python编写一个简单登录功能过程解析
2019/09/04 Python
德国旅游网站:weg.de
2018/06/03 全球购物
运动会领导邀请函
2014/01/10 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
小学教师自我剖析材料
2014/09/29 职场文书
打架检讨书
2015/01/27 职场文书
员工旷工检讨书
2015/08/15 职场文书
建房合同协议书
2016/03/21 职场文书
Javascript之datagrid查询详解
2021/09/15 Javascript
python保存图片的四个常用方法
2022/02/28 Python
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android