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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
用JQuery 判断某个属性是否存在hasAttr的解决方法
Apr 26 Javascript
下拉列表select 由左边框移动到右边示例
Dec 04 Javascript
js自动查找select下拉的菜单并选择(示例代码)
Feb 26 Javascript
谈一谈JS消息机制和事件机制的理解
Apr 14 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
js代码实现下拉菜单【推荐】
Dec 15 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
详解使用fetch发送post请求时的参数处理
Apr 05 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
vue2路由基本用法实例分析
Mar 06 Javascript
js 数组当前行添加数据方法详解
Jul 28 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
Zend引擎的发展 [15]
2006/10/09 PHP
刚才在简化php的库,结果发现很多东西
2006/12/31 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
PHP入门教程之字符串处理技巧总结(转换,过滤,解析,查找,截取,替换等)
2016/09/11 PHP
php读取本地json文件的实例
2018/03/07 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
seajs中模块的解析规则详解和模块使用总结
2014/03/12 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
JS控制表单提交的方法
2015/07/09 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
axios+Vue实现上传文件显示进度功能
2019/04/14 Javascript
ES6的解构赋值实例详解
2019/05/06 Javascript
jQuery操作cookie的示例代码
2019/06/05 jQuery
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
[08:56]DOTA2-DPC中国联赛2月23日Recap集锦
2021/03/11 DOTA
python回溯法实现数组全排列输出实例分析
2015/03/17 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
Win8下python3.5.1安装教程
2020/07/29 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
印尼太阳百货公司网站:Matahari
2018/02/04 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
2013/03/19 面试题
班主任工作经验材料
2014/02/02 职场文书
工作违纪检讨书
2014/02/17 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
汽车质检员岗位职责
2015/04/08 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书