2015-09-08 155 views
0

如何在我的jQuery代码中调用Angular函数?我试图在FAngular On点击停止传播事件

$(document).on('click', '.myBtn', function(e) { 
 
    angular.element($(".someClass")).scope().clearBtnItems(); 
 
    e.stopPropagation(); 
 
    console.log("stop..prop"); 
 
});

,但我得到以下错误:

Uncaught TypeError: angular.element(...).scope(...).clearAllResortsOption is not a function 

所以,我怎么知道哪个ID被绑定到我的控制?我是AJS新手,这是我正在修改的现有AJS应用程序。所以我不确定,动态如何注入控制器?

+0

如果你想做到这一点的角度这样做:$ event.stopPropag通货膨胀();你也尝试点击功能,而不是你可以在你的控制器中使用ng-click =“someFunction”在你的控制器中写入你的jQuery的东西someFunction() –

+0

我试过这些东西,但在函数被调用之前,事件propogates,因此我试图调用AJS fn。在jQuery中。在HTML模板中,他们将其称为sm.clearBtnItems,所以我需要找到这个sm是 – Smitha

+0

是否会遇到事件冒泡问题.... –

回答

0
write seperate ng-click for both parent and child
<div ng-click = "sm.clearBtnItems()"><div ng-click ="removeBubbling($event)"></div> 

$scope.removeBubbling = function($event){ 
     // do some code here 
     // Prevent bubbling to showItem. 
     // On recent browsers, only $event.stopPropagation() is needed 
     if ($event.stopPropagation) $event.stopPropagation(); 
     if ($event.preventDefault) $event.preventDefault(); 
      $event.cancelBubble = true; 
      $event.returnValue = false; 
} 
1

做在角方式:

使用ng-click在你的模板,而不是使用jQuery click事件。

第二件事:您不需要在角度DOM选择器内包装jQuery,因为angular.element与jQuery $(".someClass")完全相同。

在你的例子中scope()是什么?

+0

我尝试点击,但即使在调用该功能之前,事件传播并关闭下拉菜单 – Smitha

+0

因此,我试图调用我的控制器功能使用范围 – Smitha

+0

@Smitha另外做传递$事件对象控制器方法从'ng-click'就像'ng-click =“someFunction($ event)”'然后在你的函数中使用$ event来玩。 –

0

问题不在于e.stopPropagation();它在角度选择器中。

angular.element($(".someClass")) // << This is wrong

应该

angular.element(".someClass")

+0

我试过这个:angular.element(“。searchBarBG”)。scope()。clearAllResortsOption();.同样的错误 – Smitha