当前位置:   article > 正文

AngularJS的scope与事件机制_angularjs ng-if 依赖$scope中属性 则其中元素无法用代码设置事件

angularjs ng-if 依赖$scope中属性 则其中元素无法用代码设置事件

一 点睛

1 神奇的$scope

2 $scope的生命周期

3 事件机制

因为Scope的作用域范围不同,所以不同的Scope之间若有交互的话需要通过事件(Event)机制来完成

1 冒泡(Emit)冒泡事件负责从子Scope向上发送事件。

子Scope发送:

$scope.$emit('EVENT_NAME_EMIT','message');

父Scope接受:

$scope.$on('EVENT_NAME_EMIT',function(event,data)

{

......

})

2 广播事件(Broadcast)。广播负责从父Scope向下发送事件。

父Scope发送:

$scope.$broadcast('EVENT_NAME_BROAD','message');

子Scope接受:

$scope.$broadcast('EVENT_NAME_BROAD',function(event,data){

.....

})

二 实战

1 演示代码

  1. <!doctype html>
  2. <html ng-app>
  3. <head>
  4. <meta charset="utf-8">
  5. <link rel="stylesheet" type="text/css" href="Scope1.css" />
  6. </head>
  7. <body>
  8. <div ng-controller="EventController">
  9. Root scope
  10. <tt>MyEvent</tt> count: {{count}}
  11. <ul>
  12. <li ng-repeat="i in [1]" ng-controller="EventController">
  13. <button ng-click="$emit('MyEvent')">
  14. $emit('MyEvent')
  15. </button>
  16. <button ng-click="$broadcast('MyEvent')">
  17. $broadcast('MyEvent')
  18. </button>
  19. <br>
  20. Middle scope
  21. <tt>MyEvent</tt> count: {{count}}
  22. <ul>
  23. <li ng-repeat="item in [1, 2]" ng-controller="EventController">
  24. Leaf scope
  25. <tt>MyEvent</tt> count: {{count}}
  26. </li>
  27. </ul>
  28. </li>
  29. </ul>
  30. </div>
  31. </body>
  32. <script src="js/angular-1.3.0.js"></script>
  33. <script src="Scope2.js"></script>
  34. </html>

2 编写控制器

  1. function EventController($scope) {
  2. $scope.count = 0;
  3. $scope.$on('MyEvent', function() {
  4. $scope.count++;
  5. });
  6. }

3 演示

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/222826
推荐阅读
相关标签
  

闽ICP备14008679号