Angular单页应用&AngularJS内部实现原理
回顾
- 自定义指令
- 登录后获取登录信息session
- 首先在登录验证的时候保存一个user
- 在学生管理页面中运用ajax调用获取到登录的用户信息
- 对注销按钮添加点击事件:调用ajax在表现层给user赋值为null
Angular实现单页应用
angular中实现单页应用是运用了UI-router插件
- 路由
- 后台中的路由是用来配置路径,分配请求的方法;
- angular中的路由也是同样的原理,通过导入ui-router插件,在main.js中配置不同的路由
- 实现方法
先导入ui-router文件
var mainApp = angular.module("mainApp",["ui-router","regApp","loginApp","studentApp"]);
mainApp.config(function($urlRouterProvider,$stateProvider){
$urlRouterProvider.when("","/reg");
$stateProvider.state("reg",{
url:"/reg", //路由匹配的路径
templateUrl:"modules/reg/reg.html", //文件模板路径
controller:"RegController"
}
} //在html中的代码
<body>
<div ui-view><div>
<body>
Angular内部实现原理
angular的实现原理主要是利用了三个对象:$watch,$digest,$apply;
$watch 监听(列表)对象(类数组)
所有页面上绑定的属性都会放在监听列表中,并不是所有$scope中的属性都会放在监听列表中,只有页面上绑定的才会放入监听列表。
监听列表的作用就是放置所有绑定在页面上的属性
$scope.$watch("name",function(a,b){
console.log("name is changed");
});
//里边两个参数,a是修改之后的值,b是修改之前的值
$digest 循环对象
- 循环监听列表中的数据是否发生变化,则把$watch中的所有数据拿来循环,一旦有监听对象发生变化就调用回调函数进行DOM操作。
- 直到没有数据变化为止。
- 为了防止无限循环,在设计angular的过程中设定了循环次数最多10次,如果超过10次则会报错。
- 这种机制就要求不要进行过多的数据联动。
- 这个机制有一个前提:循环列表中的对象在Angular的上下文环境中。
用$apply可以让代码回到Angular的上下文环境
setTimeout(function(){
$scope.$apply(function(){
$scope.name = "changed";
});
}, 1000);
Angular单页应用&AngularJS内部实现原理的更多相关文章
- AnjularJs的增删改查(单页网站)
2016.6.4 学习文献: 你的第一个AngularJS应用:https://segmentfault.com/a/1190000000347412 AngularJS 提交表单的方式:http:/ ...
- vue路由实现多视图的单页应用
多视图的单页应用:在一个页面中实现多个页面不同切换,url也发生相应变化. router-view结合this.$router.push("/pickUp")实现,效果如下: 当点 ...
- AngularJS实现单页应用的原理——路由(Route)
AngularJS实现单页应用的原理——路由(Route) 路由:告诉你一个通往某个特定页面的途径 http://127.0.0.1/index.html#/start http://127.0.0. ...
- Nodejs之MEAN栈开发(六)---- 用Angular创建单页应用(上)
在上一节中我们学会了如何在页面中添加一个组件以及一些基本的Angular知识,而这一节将用Angular来创建一个单页应用(SPA).这意味着,取代我们之前用Express在服务端运行整个网站逻辑的方 ...
- [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
写在前面 前篇文章整理了angularjs学习目录,有园子里的朋友问我要这方面的demo,周末也没什么事,就在之前的单页应用的demo上面添加了增删改查的操作.代码比较简单,这里只列举比较重要的代码片 ...
- [Angularjs]单页应用之分页
写在前面 在项目中,用到单页应用的分页,当时想到使用滚动加载的方案,可是几次尝试都没配置成功,闲着无聊就弄了一个demo. 系列文章 [Angularjs]ng-select和ng-options [ ...
- [Angularjs]asp.net mvc+angularjs+web api单页应用
写在前面 最近的工作一直在弄一些h5的单页应用,然后嵌入到app的webview中.之前一直在用angularjs+html+ashx的一套东西.实在是玩腻了.然后就尝试通过asp.net mvc的方 ...
- 通过Web Api 和 Angular.js 构建单页面的web 程序
通过Web Api 和 Angular.js 构建单页面的web 程序 在传统的web 应用程序中,浏览器端通过向服务器端发送请求,然后服务器端根据这个请求发送HTML到浏览器,这个响应将会影响整个的 ...
- Web API 2 入门——使用ASP.NET Web API和Angular.js构建单页应用程序(SPA)(谷歌翻译)
在这篇文章中 概观 演习 概要 由网络营 下载网络营训练包 在传统的Web应用程序中,客户机(浏览器)通过请求页面启动与服务器的通信.然后,服务器处理请求,并将页面的HTML发送给客户端.在与页面的后 ...
随机推荐
- C#基础静态类的设计
- Edwin windows下基本命令:
Ctrl-Alt-z: 对区域内所有代码求值. Ctrl-x Ctrl-e: 对光标左边或上一个表达式求值. Ctrl-c Ctrl-x: 中断当前求值. Ctrl-a: 移动到行首. Ctrl-e: ...
- 浅谈MDX处理空值NULL及格式化结果
MDX查询结果中往往会含有"NULL"值,这是某维度下对应的的量值不存在导致的,为了让报表呈现更好的效果,在有些情况下,需要将"NULL"的切片值置换成0,这些 ...
- Xcode7 iOS9网络配置
iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用. & ...
- uva 371 - Ackermann Functions
#include <cstdio> int main() { long int F, S, I, Count, Value, Max, J; while(scanf("%ld % ...
- jQuery 定位锚点
// errorLine 为目标元素 scrollOffset(errorLine.offset()); function scrollOffset(scroll_offset) { $(" ...
- Effective Java Item3:Enforce the singleton property with a private constructor or an enum type
Item3:Enforce the singleton property with a private constructor or an enum type 采用枚举类型(ENUM)实现单例模式. ...
- pfsense 2.2RC版本应用
为什么要上RC版本呢?因为华硕主板有一个RTL8111G驱动在2.15中还没有识别.... 公司双线WAN,一个PPPOE一个静态IP. 开了端口转发, 要求对不同的IP进行相关限速, 到达指定网站用 ...
- SSH登陆错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
今天遇到问题,删除文件即搞定!! ~~~~~~~~~~~~~~ SSH登陆错误 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! Connectio ...
- Jtree (节点的渲染+资源管理器)
我们的还是自定义的Jtree的类: package jtree.customNode; import java.io.File; import javax.swing.JTree; import ja ...