2016-10-29 3 views
1

Ich mache einen Javascript-Kalender und ich möchte in der Lage sein, ng-klicken, wenn ich auf einen Tag klicke. Derzeit habe ich, dass ng-Klick-Funktion arbeiten, aber ich kann das geklickt Element nicht an diesen an:AngularJS bekomme NG-Klick-Quellelement

var dateDiv = document.createElement('div'); 
dateDiv.setAttribute('ng-click', 'getTimeTables(' + fullDate + ', this);'); 
dateDiv.className += ' today'; 
$compile(dateDiv)($scope); 

auch versucht, mit Winkel der $ event diese ersetzende und ich kann sie nicht arbeiten oder I don‘ t wissen wie, wie $ ($ event.currentTarget) .addClass ('newclass'); scheint nichts zu tun.

+0

Haben Sie dies versuchen? Übergeben Sie das $ -Ereignis an die Funktion: ** getTimeTables ('+ fullDate +', $ event) **. Und fügen Sie Klasse wie folgt hinzu: $ (event.target) .addClass(); – Natiq

+0

Sie haben einen Verweis auf das Element durch 'dateDiv', warum möchten Sie es bekommen? –

+0

@Maximus gibt mir einen Winkelfehler, wenn ich dateDiv.setAttribute ('ng-klick', 'getTimeTables (' + fullDateObject + ',' + dateDiv + ');'); – Xabi

Antwort

1

können Sie das Element zugreifen durch $event.target

var dateDiv = document.createElement('div'); 
dateDiv.setAttribute('ng-click', 'getTimeTables(' + fullDate + ', $event);'); 
dateDiv.className += ' today'; 
$compile(dateDiv)($scope); 

Und innen getTimeTables:

$scope.getTimeTables = function(fullDate, $event) { 
    $($event.target).addClass('newclass'); 
} 
+0

Es hat funktioniert, danke! – Xabi

+0

Sie sind willkommen), jedoch können Sie Ihre Herangehensweise überdenken und Verweis auf das Element innerhalb einer Direktive verwenden, ohne es durch Rückruf zu übergeben –

Verwandte Themen