angularjs1学习笔记--持续更新
angularJS使用的MVC为何不属于二十三种设计模式之一?
MVC被GoF (Gang of Four,四人组, 《Design Patterns: Elements of Reusable Object-Oriented Software》/《设计模式》一书的作者:Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)当做“一组用于构建用户界面的类集合”。MVC被认为是三种经典设计模式的演变::观察者模式(Observer)(Pub/Sub), 策略模式(Strategy)和组合模式(Composite)。MVC属于架构模式,而不是设计模式。
angularJS的广播事件,$emit与$broadcast
要想理解angularJS的广播事件,首先要理解$scope的作用域。$scope的作用域是树状结构的,有且有唯一一个根作用域$rootScope。联系到树状的结构,可以更好的理解angularJS提供两种事件:向上传播事件$emit以及向下传播事件$broadcast。其中向上传播事件$emit能够被该树上的所有父$scope以及同级$scope。向下传播事件以当前$scope为根,传播所有的子$scope控制器。这两种广播事件当然也对自身控制器起作用。
下面是我自己写的一个例子,介绍了$emit与$broadcast的事件的作用域。
html Code:
<div ng-controller="parentController">
<p>{{breadCrumb}},parentController</p>
<div ng-controller="currentController">
<p>{{breadCrumb}},currentController</p>
<button ng-click="$emit('MyEvent')">
$emit("MyEvent")
</button>
<button ng-click="$broadcast('MyEvent')">
$broadcast("MyEvent")
</button>
<div ng-controller="childController">
<p>{{breadCrumb}},childController</p>
</div>
</div>
<div ng-controller="sameLevelController">
<p>{{breadCrumb}},sameLevelController</p>
</div>
</div>
<div ng-controller="other_controller">
<button ng-click="$emit('MyEvent')">
$emit("MyEvent")
</button>
<button ng-click="$broadcast('MyEvent')">
$broadcast("MyEvent")
</button>
<p>{{breadCrumb}},other_controller</p>
</div>
JavaScript Code:
function parentController($scope) {
$scope.breadCrumb = 1;
$scope.$on("MyEvent", function() {
$scope.breadCrumb++;
});
}
function currentController($scope) {
$scope.$on("MyEvent", function() {
$scope.breadCrumb--;
});
}
function other_controller($scope) {
$scope.breadCrumb = 10;
$scope.$on("MyEvent", function() {
$scope.breadCrumb--;
});
}
function sameLevelController($scope) {
$scope.$on("MyEvent", function() {
$scope.breadCrumb=$scope.breadCrumb+2;
});
}
function childController($scope) {
$scope.$on("MyEvent", function() {
$scope.breadCrumb=$scope.breadCrumb+10;
});
}
通过点击按钮观察数字的变化,可以明显的发现树型结构作用域对html界面更新的影响,同时还可以注意到子$scope会继承最近路径上父$scope传来的变量值。
$rootScope绑定的范围
在angularJS启动的时候绑定ng-app的内容
angularjs1学习笔记--持续更新的更多相关文章
- 数据分析之Pandas和Numpy学习笔记(持续更新)<1>
pandas and numpy notebook 最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...
- [读书]10g/11g编程艺术深入体现结构学习笔记(持续更新...)
持续更新...) 第8章 1.在过程性循环中提交更新容易产生ora-01555:snapshot too old错误.P257 (这种情况我觉得应该是在高并发的情况下才会产生) 假设的一个场景是系统一 ...
- Semantic ui 学习笔记 持续更新
这个semantic 更新版本好快~ 首先是代码的标识<code></code> 具体样式就是红框这样的 圈起来代码感觉不错 不过要在semantic.css里在加上如下样式~ ...
- Git学习笔记(持续更新)
1.强制同步为远程的代码 远程仓库回退了commit的情况下(第2条描述之情况),强制同步远程的代码到本地 #更新远程最新的所有代码,但是不merge或者rebase git fetch --all ...
- R语言的学习笔记 (持续更新.....)
1. DATE 处理 1.1 日期格式一个是as.Date(XXX) 和strptime(XXX),前者为Date格式,后者为POSIXlt格式 1.2 用法:as.Date(XXX,"%Y ...
- ggplot2 学习笔记 (持续更新.....)
1. 目前有四种主题 theme_gray(), theme_bw() , theme_minimal(),theme_classic() 2. X轴设置刻度 scale_x_continuous(l ...
- # MongoDB学习笔记(持续更新)
启动mongo服务 sodo mongo 显示数据库(显示数据库名称和大小,单位GB) > show dbs admin (empty) local 0.078GB test 0.078GB t ...
- GOF 的23种JAVA常用设计模式 学习笔记 持续更新中。。。。
前言: 设计模式,前人总结下留给后人更好的设计程序,为我们的程序代码提供一种思想与认知,如何去更好的写出优雅的代码,23种设计模式,是时候需要掌握它了. 1.工厂模式 大白话:比如你需要一辆汽车,你无 ...
- BLE资料应用笔记 -- 持续更新
BLE资料应用笔记 -- 持续更新 BLE 应用笔记 小书匠 简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.'让我们'更深入地探索这些方面吧. 蓝牙无处不在-,您可以在几乎每一台电话.笔记本电 ...
随机推荐
- python+jinja2实现接口数据批量生成工具
在做接口测试的时候,我们经常会遇到一种情况就是要对接口的参数进行各种可能的校验,手动修改很麻烦,尤其是那些接口参数有几十个甚至更多的,有没有一种方法可以批量的对指定参数做生成处理呢. 答案是肯定的! ...
- 转载-Springboot整合ehcache缓存
转载:https://www.cnblogs.com/xzmiyx/p/9897623.html EhCache是一个比较成熟的Java缓存框架,最早从hibernate发展而来, 是进程中的缓存系统 ...
- 牛客小白月赛6 B 范围 数学
链接:https://www.nowcoder.com/acm/contest/135/B来源:牛客网 题目描述 已知与均为实数,且满足: 给定A,B,求x的取值范围? 由于Apojacsleam的计 ...
- poj 1753 Flip Game(暴力枚举)
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 52279 Accepted: 22018 Des ...
- POJ-2236 Wireless Network 顺便讨论时间超限问题
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 26131 Accepted: 108 ...
- poj1651 Multiplication Puzzle(简单区间dp)
题目链接:http://poj.org/problem?id=1651 题意:一系列的数字,除了头尾不能动,每次取出一个数字,这个数字与左右相邻数字的乘积为其价值, 最后将所有价值加起来,要求最小值. ...
- Android-友盟第三方登录与分享
### 前言 最近项目中又一次需要集成友盟的三方登录与分享,之前没有记录过,所以这次来写一下... ### 准备工作 1.注册友盟账号创建应用,获取key:申请地址http://www.umeng.c ...
- JPA案例
ORM 什么是ORM: 对象关系映射(Object Relational Mapping,简称ORM)是建立实体类和数据库表之间的关系,从而达到操作实体类就相当于操作数据库表的目的. ORM思想 主要 ...
- 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案
[Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 方法的调用不一定再main方法中,可以在其他方法中进行调用,只要是程序执行到的位置,都可以去调用其他方法. (2)方法调用的时候,实参和形参要求个数对应相同,数据类型对应相同,方 ...