2015-09-08 205 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