AngularJs事件机制

1.类似于订阅/发布模式
2.$scope.$broadcast 向子控制器发送【最直接的关系,$scope.$on用于监听】
3.$scope.$emit 向父控制器发送【最直接的关系,$scope.$on用于监听】
4.如果同级控制器传递消息,则采用先发送到父级(emit),再从父级发到目标控制器的方式,即$scope.$parent.$broadcast('myevent', 'Some data');
5.$rootscope是所有scope的父,同样具备broadcast/emit/on方法
6.$rootscope.$emit会被$rootscope.$on监听
7.$rootscope.$broadcast会被所有$scope.$on监听,也包括$rootscope.$on
8.取消订阅:
var myListener = $scope.$on('child', function (event, data) {
    // do something
  });
// unsubscribes...
  // this would probably sit in a callback or something
  myListener();
 
9.当使用$rootscope.on时,我们需要语句$scope.$on('$destroy', myListener);手动销毁监听器
10.当用$emit时,如果想阻止冒泡事件,可以这样用:
$scope.$on('myCustomEvent', function (event, data) {
  event.stopPropagation();
});
11,所有事件监听器存放于$rootScope.$$listeners,可以通过语句$rootScope.$$listeners.myEventName=[]重置,但不建议这样做。
12.订阅/发布事件建议采用命名空间,避免冲突,类似如下:
$scope.$emit('inbox:send'[, data]);
$scope.$on('inbox:send', function (event, data) {...});
 
$scope.$broadcast('inbox:delete'[, data]);
$scope.$on('inbox:delete', function (event, data) {...});
 
$scope.$emit('inbox:save'[, data]);
$scope.$on('inbox:save', function (event, data) {...});
 
posted @ 2016-10-09 09:46  enjoylearning  阅读(1541)  评论(0编辑  收藏  举报