AngularJs-MVC之路由、模块以及依赖注入
前面呢,我们大概的了解了下AngularJs的入门,也做过了hello world的一个demo,不知道大家有没有掌握呢?在下面我们需要讲一些AngularJS的一些干货。
1,一个完整项目的目录结构
以上图片是根据大漠老师的整理而得,告诉大家一个好消息是,大漠老师的课程在慕课网上,每晚将近2万人学习。
2,package.json文件
{
"version": "0.0.0",
"private": true,
"name": "angular-recommended",
"description": "ng官方推荐的项目结构",
"license": "MIT",
"devDependencies": {
"http-server": "^0.6.1",
"bower": "^1.3.1"
},
"scripts": {
"postinstall": "bower install",
"prestart": "npm install",
"start": "http-server -p 8000"
}
}
package.json文件是给npm工具用的,把这个copy到你的文件(名字为package.json),运行 npm start即可。
3,index.html
<!doctype html>
<html ng-app="bookStoreApp"> <head>
<meta charset="UTF-8">
<title>BookStore</title>
<script src="framework/1.3.0.14/angular.js"></script>
<script src="framework/1.3.0.14/angular-route.js"></script>
<script src="framework/1.3.0.14/angular-animate.js"></script> <script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/filters.js"></script>
<script src="js/services.js"></script>
<script src="js/directives.js"></script>
</head> <body>
<div ng-view>
</div>
</body> </html>
上面是我们的html的主文件,用来加载我们所需要的 js和css,另外,我们在此建立一个“根视图”,它的作用是用来包裹后面插入进来的代码片段的。也可以加一些很炫的动画效果
4,tpls目录--存放代码片段
<ul>
<li ng-repeat="book in books">
书名:{{book.title}} 作者:{{book.author}}
</li>
</ul>
这个是tpls目录中的一个html文件,叫bookList.html文件,看里面就这么些东西,并不是一个完整的html文件,我们叫代码片段,借用angularjs我们可以给其赋值并插入到index.html的根目录中。
ng-repeat是重复调用就像是我们用的 for in一样,在这里呢会重复生成多个 <li>...</li>这样的目录结构。
5,js目录--app.js
上面我们说过app.js是程序的主入口点,也就是说,如果程序运行的话,会首先运行app.js,根据app.js来控制整个项目的运行情况,我们来看看代码
var bookStoreApp = angular.module('bookStoreApp', [
'ngRoute', 'ngAnimate', 'bookStoreCtrls', 'bookStoreFilters',
'bookStoreServices', 'bookStoreDirectives'
]); bookStoreApp.config(function($routeProvider) {
$routeProvider.when('/hello', {
templateUrl: 'tpls/hello.html',
controller: 'HelloCtrl'
}).when('/list',{
templateUrl:'tpls/bookList.html',
controller:'BookListCtrl'
}).otherwise({
redirectTo: '/hello'
})
});
首先我们要建一个模块,angularjs所有的程序都是建立在模块上的。让我们看看,我们建立的模块名称呢叫 bookStoreApp,这个也是index.html中 ng-app的值,上节我们就说过了ng-app的作用在此就不在说了。
当程序走到这呢,会发现这个模块需要依赖很多的模块(angular.module(ModuleName',[..依赖模块..])),程序呢就会根据数组里面的模块名称一个一个加载进来,在此说下,这个模块名称呢是 framework文件里面的某个文件名。
下面我们看看 模块的配置,有一个 $routeProvider 这个呢是路由控制器它的作用是根据不同的url控制不同的视图展示出来,当用 .when()的时候,如果url地址满足里面的条件的话呢,就会找到模板文件并执行定义好的controll文件给模板文件赋值并插入到index.html的根目录,如果都找不到就会执行 otherwise()里面的方法。下面看效果
ok,注意看浏览器中的地址栏,会发现同样的文件(index.html),而后面的参数不同显示的结果也不同。在里面我们会看到一个 # 这个会告诉浏览器在页面内跳转。
6,js目录--controllers.js
var bookStoreCtrls = angular.module('bookStoreCtrls', []); bookStoreCtrls.controller('HelloCtrl', ['$scope',
function($scope) {
$scope.greeting = {
text: 'Hello'
};
}
]); bookStoreCtrls.controller('BookListCtrl', ['$scope',
function($scope) {
$scope.books =[
{title:"《Ext江湖》",author:"大漠穷秋"},
{title:"《ActionScript游戏设计基础(第二版)》",author:"大漠穷秋"},
{title:"《用AngularJS开发下一代WEB应用》",author:"大漠穷秋"}
]
}
]); /**
* 这里接着往下写,如果控制器的数量非常多,需要分给多个开发者,可以借助于grunt来合并代码
*/
看上面的代码,我建立了两个控制器,控制器里我们给$scope赋值,这会根据app.js里面的路由来载入到代码片段并且生成一个赋完值的html。
AngularJs-MVC之路由、模块以及依赖注入的更多相关文章
- 4.了解AngularJS模块和依赖注入
1.模块和依赖注入概述 1.了解模块 AngularJS模块是一种容器,把代码隔离并组织成简洁,整齐,可复用的块. 模块本身不提供直接的功能:包含其他提供功能的对象的实例:控制器,过滤器,服务,动画 ...
- ASP.NET MVC中使用Unity进行依赖注入的三种方式
在ASP.NET MVC中使用Unity进行依赖注入的三种方式 2013-12-15 21:07 by 小白哥哥, 146 阅读, 0 评论, 收藏, 编辑 在ASP.NET MVC4中,为了在解开C ...
- AngularJs:Service、Factory、Provider依赖注入使用与区别
本教程使用AngularJS版本:1.5.3 AngularJs GitHub: https://github.com/angular/angular.js/ ...
- --@angularJS--路由、模块、依赖注入
以下是演示angular路由切换的demo. 主页:index.html <!doctype html><html ng-app="bookStoreApp"&g ...
- 跟我学AngularJs:Service、Factory、Provider依赖注入使用与差别
林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 本教程使用AngularJs版本号:1.5.3 AngularJ ...
- ASP.NET Core 中文文档 第四章 MVC(4.4)依赖注入和控制器
原文: Dependency Injection and Controllers 作者: Steve Smith 翻译: 刘浩杨 校对: 孟帅洋(书缘) ASP.NET Core MVC 控制器应通过 ...
- Angularjs学习笔记(三)----依赖注入
一.定义 如前所述,$scope对象被神秘的注入到了控制器中,实际上,这是因为控制器声明了它需要$scope,所以AngularJS才会创建并注入它.这套依赖管理系统可以这样总结:"为了正常 ...
- AngularJs 学习笔记(三)依赖注入
一个对象可以通过三种方式来获取对依赖对象的控制权: 1.在内部创建依赖的对象 2.通过全局变量引用这个依赖对象 3.通过参数进行传递(在这里是通过函数参数) AngularJs通过$injector注 ...
- [ASP.NET MVC 小牛之路]04 - 依赖注入(DI)和Ninject
本人博客已转移至:http://www.exblr.com/liam 为什么需要依赖注入 在[ASP.NET MVC 小牛之路]系列的理解MVC模式文章中,我们提到MVC的一个重要特征是关注点分离( ...
随机推荐
- 点击页面div弹窗以外隐藏的两种思路
在本文为大家介绍两种思路实现点击页面其它地方隐藏该div,第一种是对document的click事件绑定事件处理程序.. 第一种思路分两步 第一步:对document的click事件绑定事件处理程序, ...
- ggplot2颜色操作
1.颜色列表
- DW Basic Knowledge1
以下内容,常读常新,每次都有新的感悟和认识. 数据仓库必须使组织机构的信息变得容易存取. 数据仓库的内容需要是容易理解的,数据对业务人员也必定是直观的,明显的. 数据仓库重新组织了原来OLTP数据库的 ...
- SSIS WITH VERTICA的注意事项总结
项目中使用到SSIS访问vertica,以下是我使用中总结的一些注意事项: 1.vertica对约束的处理方式与之前的DBMS是不同的. 以上的截图说明,在使用ado.net provider连接ve ...
- AMO olap Test C# generate tsql and mdx
通过AMO访问online的cube,生成等值的TSql和mdx 自动生成等值的TSQL和MDX进行Cube测试.其中难度比较大的部分是拼接TSQL. 暂时不处理calculations,只除理met ...
- WEB安全--渗透笔记
前言 服务器被攻击是常有的事,自从上一次被注入挂马后最先想到的是安全狗,最新版的安全狗软件可以抵挡大部分的恶意攻击,但是却有很多网站管理员疏于管理,才有了接下来的入侵. 我们的攻击目标近期上线了安全狗 ...
- uva 839 Not so Mobile-S.B.S.
Before being an ubiquous communications gadget, a mobilewas just a structure made of strings and wir ...
- 《TCP/IP详解 卷一》读书笔记-----TCP persist &Keeplive timer
1.persist timer:当接收方建议的窗口大小为0时,发送方就会停止发送,直到接收方有缓存空间时再用一个窗口值非零的ACK提示发送方可以继续发送.但是这个称为window update的ACK ...
- 数据结构Java实现05----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- Pureftp-安全的ftp服务器部署
一.简介: Pure-FTPd 是一款免费(BSD)的,安全的,高质量和符合标准的FTP服务器. 侧重于运行效率和易用性. 它提供了简单的答案,他满足了大众化的需求,包括普通用户以及主机供应商们 Pu ...