【问题标题】:Why do you need to pass event for onClick in firefox but not for chrome using Angular?为什么您需要在 Firefox 中为 onClick 传递事件,而不为使用 Angular 的 chrome 传递事件?
【发布时间】:2016-07-27 12:02:35
【问题描述】:

在 firefox 中,您必须传入事件才能使以下操作生效

// In directive link
function linkFunc(scope, element, attr){
        element.on('click', function(event){

            event.stopPropagation();
            scope.myVar.value = false;
            scope.$digest();
        });
]

在 Chrome 中,您可以执行以下操作

// In directive link
function linkFunc(scope, element, attr){
        // Won't work for firefox
        //    will run into ReferenceError: event is not defined
        element.on('click', function(){

            event.stopPropagation();
            scope.myVar.value = false;
            scope.$digest();
        });
}

这种行为差异背后的原因是什么?

【问题讨论】:

  • 您从哪里获取$event
  • 1) 你确定你在写角度吗? 2) $event 可能是未定义的,这将引发 ReferenceError 异常。
  • 对不起,我错过了输入 $ ,但是 chrome 中的 Angular 工作没有明确传入的事件。代码在 Angular 的指令链接中
  • 你使用 ng-click 按钮?
  • @AlainIb 它在指令链接函数中,所以它已经引用了元素

标签: javascript angularjs google-chrome firefox


【解决方案1】:

这与 angularjs 或任何其他框架无关。

event 是 IE 和 Chrome 中的全局变量(window 对象的属性)。在 Firefox 中并非如此,因此您需要将其作为参数显式发送

看看this answerhere

【讨论】:

    【解决方案2】:

    角度上没有“onClick”,而是“ng-click”,(也许是我不知道的 Jquery)

    官方文档:https://docs.angularjs.org/api/ng/directive/ngClick

    <ANY
      ng-click="functionA()">
      ...
    </ANY>
    

    【讨论】:

      猜你喜欢
      • 2019-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      相关资源
      最近更新 更多