【发布时间】:2017-09-26 00:22:24
【问题描述】:
在我的角度控制器(这是一个用于 Google 地图指令的控制器)中,我正在像这样在文档元素上添加一个事件监听器,因此我可以使用全屏 API:
if (document.addEventListener) {
document.addEventListener("webkitfullscreenchange", this.fullScreenChangeHandler, false);
document.addEventListener("mozfullscreenchange", this.fullScreenChangeHandler, false);
document.addEventListener("fullscreenchange", this.fullScreenChangeHandler, false);
document.addEventListener("MSFullscreenChange", this.fullScreenChangeHandler, false);
}
然后我在我的 fullScreenChangeHandler 方法中处理这样的事件,该方法也直接位于控制器中:
fullScreenChangeHandler(event) {
var containerScope = angular.element(event.srcElement).scope();
var map = containerScope.map;
var mapController = containerScope.$parent.mapsCtrl;
So (event.srcElement) = 文档节点。这种访问控制器的方法有效,但不知何故坏了。无论如何,感觉代码很臭,所以一定有更好的办法。我会很感激任何有关方向的建议。
【问题讨论】:
-
为什么需要访问 mapsCtrl?
-
我正在实现自定义的“最大化地图”和“恢复地图”按钮,而不是谷歌地图的默认按钮,当使用“esc”时,“fullScreenChangeHandler”需要进行地图居中和重新绘制退出全屏模式。 (我需要自定义样式以及按钮的自定义功能,这就是我不使用默认值的原因)
标签: javascript angularjs events controller