2014-04-01 26 views
6

點擊ngClick怎麼有這樣如何觸發模擬從jQuery的

<a href="" ng-click="someAction()">Some text</a> 

一個鏈接,我想從jQuery的調用ngClick行動:

$('a').click() 

但它不工作:不調用someAction() 。也沒有工作

$('a').trigger('click') 

是否有可能從jQuery調用someAction()

+0

IM不知道如果我理解你,但你可以觸發點擊用'.trigger( '點擊');'或'.triggerHandler( '點擊'); ' –

+0

@AdrianPreuss,'trigger('click')'也不起作用 – havenchyk

+0

爲什麼你需要從jquery調用函數,我會建議使用angular方式本身。 – Prashobh

回答

3

沒關係的申請週期和超時,你在這裏:

$('a').dispatchEvent(new MouseEvent('click', { 
'view': window, 
'bubbles': true, 
'cancelable': true 
})); 
+0

感謝您的回答,但我需要在角度外做它,我無法更改源代碼,只需要從jquery中測試 – havenchyk

+0

您可以運行這些命令從JavaScript控制檯,所以你基本上是外部角('角'是一個全局變量暴露在AngularJS窗口對象) –

+0

我有一個錯誤:[錯誤:[$ rootScope:inprog] $應用已在進行中' – havenchyk

1

是的,你可以,但你應該分配一個ID:

<a id='Button'>SOMETEXT</a> 

$("#Button").click(function() { 
    alert('clicked'); 
    someAction(); 
); 

這應該修復它。

+0

對不起,我更新了問題 – havenchyk

4

我認爲這是奇怪的是,它不工作,我得到它與兩個

angular.element('a[ng-click="someAction()"]') 

$('a[ng-click="someAction()"]') 
工作

作爲選擇器,以及click()trigger('click')來觸發點擊處理器。

http://plnkr.co/edit/6VMavwVImXAonSp8xZrI?p=preview (看控制檯)

+1

感謝您的回答 – havenchyk

+2

真棒。第一個在大量頭部劃傷後幫助我。 –