AngularJS入门教程之模块化操作用法示例


Posted in Javascript onNovember 02, 2016

本文实例讲述了AngularJS模块化操作用法。分享给大家供大家参考,具体如下:

在前面几节教程中,代码比较少,为了方便说明问题笔者?⒖刂破鞔?攵夹丛诹?TML页面中,实际上这并不是什么好的编程习惯,而且可维护性差。通常的做法都是?⒋?硪滴衤呒?拇?胄丛谝桓龅ザ赖?S文件中,然后在HTML页面中引入该文件。

然而这样会带来新的问题,我们的控制器全都定义在全局的命名空间中,假设我们有一个公共的JS文件,在登录页面和密码修改页面都引入这个JS,A开发人员和B开发人员英雄所见略同,对控制器的命名都是UserController,这样就会导致命名冲突。而且我们在新增一个控制器的时候总是要担心是不是已经有了一个同名的控制器,代码的扩展性是不是很差呢?

AngularJS中的模块能够很好的解决这个问题,接下来我们看看AngularJs怎么处理命名冲突问题。

代码清单1. tutorial04_1.html

<!DOCTYPE html>
<html ng-app="loginMod">
<head lang="en">
 <meta charset="UTF-8">
 <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
 <title>tutorial04_1</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 type="text/javascript" src="js/tutorial04.js">
</script>
</body>
</html>

代码清单2. tutorial04_2.html

<!DOCTYPE html>
<html ng-app="pwordMod">
<head lang="en">
 <meta charset="UTF-8">
 <script type="text/javascript" src="angular-1.3.0.14/angular.js"></script>
 <title>tutorial04_2</title>
</head>
<body>
<div ng-controller="UserController">
 密码:<input type="password" ng-model="pword" placeholder="密码"/>
 <button ng-click="changePwrd()">提交</button>
 <p>您输入的密码:{{pword}}</p>
</div>
<script type="text/javascript" src="js/tutorial04.js">
</script>
</body>
</html>

代码清单3. tutorial04.js

var loginMod = angular.module("loginMod", []);
loginMod.controller("UserController",function($scope,$log)
 {
  $scope.name="admin";
  $scope.pword="123456";
  $log.info( $scope.name);
  $log.info( $scope.pword);
  $scope.login = function()
  {
   alert("登录");
  }
 }
);
var pwordMod = angular.module("pwordMod", []);
pwordMod.controller("UserController",function($scope,$log)
 {
  $scope.pword="123456";
  $scope.changePwrd = function()
  {
   alert("修改密码");
  }
 }
);

我们有登录页面tutorial04_1.html和修改密码页面tutorial04_2.html,控制器代码都写在tutorial04.js中,在这两个页面中都定义了相同的控制器UserController。

var loginMod = angular.module("loginMod", []);

通过这行代码定义模块,第一个参数为模块名。第二个参数是一个数组,为可选,如果指定该参数则创建一个新的模块,不指定则从配置中检索。

loginMod.controller("UserController",function($scope,$log)...

通过controller函数向模块中添加一个控制器,第一个参数为控制器名称,第二个参数为控制器实现部分。

然后在tutorial04_1.html和tutorial04_2.html就可以使用ng-app="loginMod"和ng-app="pwordMod"来指定页面中的控制器属于哪个模块。

在浏览器中运行页面可以看到,不同页面调用不用模块中的UserController控制器:

AngularJS入门教程之模块化操作用法示例

AngularJS入门教程之模块化操作用法示例

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

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

Javascript 相关文章推荐
写的htc的数据表格
Jan 20 Javascript
基于Asp.net与Javascript控制的日期控件
May 22 Javascript
script标签的 charset 属性使用说明
Dec 04 Javascript
js实现在字符串中提取数字
Nov 05 Javascript
iframe子父页面调用js函数示例
Nov 07 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
基于d3.js实现实时刷新的折线图
Aug 03 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
js实现前端图片上传即时预览功能
Aug 02 Javascript
webpack dll打包重复问题优化的解决
Oct 10 Javascript
巧妙运用v-model实现父子组件传值的方法示例
Apr 07 Javascript
js 打开新页面在屏幕中间的实现方法
Nov 02 #Javascript
jQuery图片切换动画特效
Nov 02 #Javascript
用jQuery的AJax实现异步访问、异步加载
Nov 02 #Javascript
AngularJS入门教程之MVC架构实例分析
Nov 01 #Javascript
bootstrap table复杂操作代码
Nov 01 #Javascript
bootstrap flask登录页面编写实例
Nov 01 #Javascript
JS弹出窗口的运用与技巧大全
Nov 01 #Javascript
You might like
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
2016/06/12 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
基于JQuery实现相同内容合并单元格的代码
2011/01/12 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
jQuery UI设置固定日期选择特效代码分享
2015/08/27 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
Vue.js标签页组件使用方法详解
2019/10/19 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
ant design vue中日期选择框混合时间选择器的用法说明
2020/10/27 Javascript
手写Vue源码之数据劫持示例详解
2021/01/04 Vue.js
Python中str is not callable问题详解及解决办法
2017/02/10 Python
python 文件操作删除某行的实例
2017/09/04 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python遍历文件夹下所有excel文件
2018/01/03 Python
Python入门必须知道的11个知识点
2018/03/21 Python
实用自动化运维Python脚本分享
2018/06/04 Python
python TK库简单应用(实时显示子进程输出)
2019/10/29 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
python安装后的目录在哪里
2020/06/21 Python
使用HTML5 Canvas API绘制弧线的教程
2016/03/22 HTML / CSS
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
Sony C++笔试题
2013/03/10 面试题
影视动画专业个人的自我评价
2013/12/31 职场文书
社区文化建设方案
2014/05/02 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
2014年食品安全工作总结
2014/12/04 职场文书
2015年药店工作总结
2015/04/20 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
Golang 实现超大文件读取的两种方法
2021/04/27 Golang