0
使用Angular.js(1.x)。
看来$rootScope
上的取消注册事件侦听器不会从$$listeners
属性数组中删除侦听器。我错过了什么吗?
这里我用$scope.$root
来访问$rootScope
。
- 获取听众列表。
> $scope.$root.$$listeners Object $locationChangeSuccess: Array[1] __proto__: Object
- 添加
cat
听者上$rootScope
。 - 验证
cat
侦听加入。 - 注销,通过调用
dog
功能。 - 检查
cat
侦听器是空的/除去。不。 - 在情况下,它是一个未应用的消化循环问题。
- 检查
cat
侦听器是空的/除去。不。
> var dog = $scope.$root.$on("cat", function() {}); undefined
> $scope.$root.$$listeners Object $locationChangeSuccess: Array[1] cat: Array[1] __proto__: Object
> dog() undefined
> $scope.$root.$$listeners Object $locationChangeSuccess: Array[1] cat: Array[1] // ???? I would expect this to be 0 now __proto__: Object
> $scope.$root.$apply() undefined
> $scope.$root.$$listeners Object $locationChangeSuccess: Array[1] cat: Array[1] // Nope. __proto__: Object