gpt4 book ai didi

javascript - AngularJS:指令在页面上多次并发出/广播处理

转载 作者:行者123 更新时间:2023-12-03 09:10:15 26 4
gpt4 key购买 nike

我有一个奇怪的问题:

在我看来,当我声明指令 2 次(甚至更多)次时,我得到了这样的魔力:

Controller :

      $scope.$broadcast('slideableClose');

和指令:

      scope.$on('slideableClose', function(event) {
console.log('slideableClose');
action();
});

当我广播我的数据时,我在控制台中看到它被调用了两次

我怎样才能只调用它一次,因为它只能被触发一次,但我的页面上需要多个指令?

最佳答案

嗯,我有一种方法可以用来完成一次触发,但它需要维护以及 Controller 和该变量的指令之间的双向绑定(bind)。

您可以定义范围变量:

isHandled = false

现在,每当事件被触发时,将此值设置为 false 并使您的处理程序如下所示:

scope.$on('slideableClose', function(event) {
if (isHandled) {
return;
}
console.log('slideableClose');
action();
});

现在,如果该事件已被处理,则不会再次处理。否则将予以处理。请记住在事件本身被触发时或触发之前将此变量设置为 false。

关于javascript - AngularJS:指令在页面上多次并发出/广播处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32096443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com