开发者问题收集

为什么需要在 Firefox 中传递 onClick 事件,而在使用 Angular 的 Chrome 中却不需要传递?

2016-04-06
1149

在 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();
        });
}

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

2个回答

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

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

请查看 此答案 此处

IsraGab
2016-04-06

Angular 上没有“onClick”,但有“ng-click”(也许是 Jquery,我不知道)

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

<ANY
  ng-click="functionA()">
  ...
</ANY>
AlainIb
2016-04-06