关于$emit和$broadcast的理解与测试
2013-04-10 10:02
134 查看
$emit和$broadcast使得event、data在controller与view之间的传递变的简单。
$emit只能向parent controller传递event与data
$broadcast只能向child controller传递event与data
先看测试代码:
emit-broadcast.html
<!DOCTYPE html>
<html>
<head>
<link href="../bootstrap.css" rel="stylesheet"/>
<script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="../bootstrap.js"></script>
<script type="text/javascript" src="../angular.js"></script>
<script type="text/javascript" src="emit-broadcast.js"></script>
<style>
.ng-scope {
border: 1px dotted red;
}
</style>
</head>
<body>
<div ng-app="" class="container">
<div ng-controller="EventController" class="span12">
Root scope MyEvent count: {{count}}
<ul>
<li ng-repeat="i in [1]" ng-controller="AbcController">
<button ng-click="$emit('MyEvent')">$emit('MyEvent')</button>
<button ng-click="$broadcast('MyEvent')">$broadcast('MyEvent')</button>
<br>
Middle scope MyEvent count: {{count}}
<ul>
<li ng-repeat="item in [1, 2]" ng-controller="EventController">
- Leaf scope MyEvent count: {{count}}
</li>
</ul>
</li>
</ul>
</div>
</div>
</body>
</html>
emit-broadcast.js
function EventController($scope) {
$scope.count = 0;
$scope.$on('MyEvent', function() {
$scope.count++;
});
}
function AbcController($scope) {
// $scope.count = 0;
$scope.fireEvent = function() {
$scope.$emit('MyEvent');
$scope.$broadcast('MyEvent');
};
}
*注意resources的location哦,建议使用chrome调试,比较方便
$emit只能向parent controller传递event与data
$broadcast只能向child controller传递event与data
先看测试代码:
emit-broadcast.html
<!DOCTYPE html>
<html>
<head>
<link href="../bootstrap.css" rel="stylesheet"/>
<script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="../bootstrap.js"></script>
<script type="text/javascript" src="../angular.js"></script>
<script type="text/javascript" src="emit-broadcast.js"></script>
<style>
.ng-scope {
border: 1px dotted red;
}
</style>
</head>
<body>
<div ng-app="" class="container">
<div ng-controller="EventController" class="span12">
Root scope MyEvent count: {{count}}
<ul>
<li ng-repeat="i in [1]" ng-controller="AbcController">
<button ng-click="$emit('MyEvent')">$emit('MyEvent')</button>
<button ng-click="$broadcast('MyEvent')">$broadcast('MyEvent')</button>
<br>
Middle scope MyEvent count: {{count}}
<ul>
<li ng-repeat="item in [1, 2]" ng-controller="EventController">
- Leaf scope MyEvent count: {{count}}
</li>
</ul>
</li>
</ul>
</div>
</div>
</body>
</html>
emit-broadcast.js
function EventController($scope) {
$scope.count = 0;
$scope.$on('MyEvent', function() {
$scope.count++;
});
}
function AbcController($scope) {
// $scope.count = 0;
$scope.fireEvent = function() {
$scope.$emit('MyEvent');
$scope.$broadcast('MyEvent');
};
}
*注意resources的location哦,建议使用chrome调试,比较方便
相关文章推荐
- 关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!
- 关于Windows消息钩子的理解与测试项目
- Charpter8 关于单元测试、集成测试和系统测试我的理解
- 理解angularjs中的$emit,$broadcast和$on
- 理解angularjs中的$emit,$broadcast和$on
- 关于C++指向指针的指针的一点测试与理解
- 测试的一段小代码,关于javascript this 的一些理解
- 关于Expdp/Impdp 并行导入导出详细测试结果和并行参数的正确理解!!
- 关于理解JS中typeof和eval函数的代码测试
- 测试中理解到的关于缓存的理解
- [转]关于软件自动化测试框架的理解
- 关于测试代码必须做以下几件事情的下厨做菜理解法。
- 关于对测试金字塔的理解收获共享
- 理解angularjs中的$emit,$broadcast和$on
- MySQLdb Python模块autocommit属性测试及测试过程中关于数据库连接的理解
- 关于软件测试的理解比较学术的几个角度
- 关于测试和测试人员
- 关于unitils联合dbunit的测试
- tomcat中关于-Xms -Xmx -XX:PermSize -XX:MaxPermSize的理解和区别
- 关于JAXB的一些理解