从ng-click获取原始元素

15 浏览
0 Comments

从ng-click获取原始元素

我在我的视图中有一个带有ng-click的项目列表:\n

  • {{team.name}}

\n我在指令中的foo函数中处理点击事件,传递$event作为被点击对象的引用,但是我得到的是img标签的引用,而不是li标签的引用。然后我不得不像这样做来获取li:\n

$scope.foo = function($event, team) {
   var el = (function(){
       if ($event.target.nodeName === 'IMG') {
          return angular.element($event.target).parent(); // 获取li
       } else {
          return angular.element($event.target);          // 是li
       }
   })();

\n有没有一种简单的方法来获取与ng-click绑定的元素的引用,而不需要在我的指令中进行DOM操作?

0
0 Comments

问题的出现原因是console.log方法在执行时,会显示出对象的最新状态,而不是在调用console.log方法时的状态。这导致了$event.currentTarget属性在控制台中显示为null。

解决方法是参考上述链接中提供的信息,该链接解释了console.log方法连续调用产生不一致结果的原因。

0
0 Comments

问题出现的原因:$event对象中的currentTarget属性被设置为null,导致无法获取原始元素。

解决方法:使用$event.currentTarget来代替$event.target来获取原始元素。

当我们在AngularJS中使用ng-click指令时,有时会遇到一个问题:无法从$event对象中获取到原始元素。在这种情况下,我们需要使用$event.currentTarget属性来代替$event.target属性。

一位开发者在遇到这个问题后,通过使用$event.currentTarget属性解决了这个问题,并表示这个解决方法有效。他还提到,$event对象中的currentTarget属性被设置为null,这一点非常奇怪。

另一位开发者在评论中表示,他在打印$event对象时发现,$event.currentTarget的值确实是null。然而,如果打印$event.currentTarget引用,就可以显示正确的元素。

还有一位开发者提到,他通常会使用var elem = $event.currentTarget || $event.srcElement来获取原始元素,因为这种写法更加跨浏览器友好。然而,他不确定这种写法是否仍然需要。

此外,还有一位开发者指出,通过console.log打印的对象是执行的最后状态,而不是调用console.log时的状态。他提供了一个链接,可以了解更多关于这个问题的信息。

,通过使用$event.currentTarget属性来代替$event.target属性,我们可以解决无法从$event对象中获取原始元素的问题。此外,我们还需要注意console.log打印对象的特性,以避免产生不一致的结果。

0