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 应用笔记 小书匠 简而言之,蓝牙无处不在,易于使用,低耗能和低使用成本.'让我们'更深入地探索这些方面吧. 蓝牙无处不在-,您可以在几乎每一台电话.笔记本电 ...
随机推荐
- tf.name_scope() 和 tf.variable_scope() 的用法和玄机
https://my.oschina.net/liusicong/blog/1593467
- C#中的变量祥解
一.C#数据类型: A:值类型 值类型变量可以直接分配一个值,它是从System.ValueType派生而来,值类型直接包含数据,比如int,char,float,他们分别存储整型数据,字符,浮点数, ...
- eruda.js 实现线上调出控制台
<script src="//cdn.bootcss.com/eruda/1.3.0/eruda.min.js"></script> 调用 eruda.in ...
- SpringBoot读取配置文件源码探究
1. SpringBoot读取配置文件源码探究 1.1. 概览 springboot的源码是再原来的Spring源码上又包了一层,看过spring源码都知道,当我们从入口debug进去的时候,原来的S ...
- CSS 之Grid 网格知识梳理2
继上篇的CSS 之Grid下半部分 14.将单元格划分到一个区域,使用grid-template-areas属性: ag: grid-template-areas: "header h ...
- px和dp(内含大量的像素单位详解)
1.前言: 读完本文你会学到什么: dp(device pixels) px(css pixels) pt(point) ppi(pixels per inch) dpi(dots per inch) ...
- 第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题
第二十四届全国青少年信息学奥林匹克联赛初赛 普及组C++语言试题 1.原题呈现 2.试题答案 3.题目解析 因博客园无法打出公式等,所以给你们几个小编推荐的链接去看看,在这里小编深感抱歉! https ...
- codeforces 877 E. Danil and a Part-time Job(线段树(dfs序))
题目链接:http://codeforces.com/contest/877/problem/E 题解:显然一看就感觉要么树链剖分要么线段树+dfs序,题目要求的操作显然用线段树+dfs序就可以实现. ...
- 【JavaScript】吃饱了撑的系列之JavaScript模拟多线程并发
前言 最近,明学是一个火热的话题,而我,却也想当那么一回明学家,那就是,把JavaScript和多线程并发这两个八竿子打不找的东西,给硬凑了起来,还写了一个并发库concurrent-thread-j ...
- 实验吧CTF练习题---WEB---猫抓老鼠解析
实验吧web之猫抓老鼠 地址:http://www.shiyanbar.com/ctf/20 flag值:KEY: #WWWnsf0cus_NET# 解题步骤: 1.观察题意,说是猫抓 ...