2013-01-17 7 views
35

Ho creato una funzione che dovrebbe aggiungere un elemento nella posizione in cui ho fatto clic all'interno di un div. Ora il problema con questa funzione è che, ogni volta che clicco, prende la posizione x & y del documento, non la posizione x & y all'interno del div. Quindi quello che voglio veramente è che l'angolo in alto a sinistra del mio div dovrebbe dare x = 0 & y = 0, ma non so se questo è possibile? E credo che c'è un altro modo per fare questo ..angularJS - ottenendo posizioni x & y da mouseclick in div

$scope.addOnClick = function(event) { 
     $scope.items.push({ 
      "label": "Click", 
      "value": 100, 
      "x": event.x-50, 
      "y": event.y-50, 
     }) 
} 

risposta

58

È necessario modificare event.x-event.offsetX e event.y-event.offsetY

non è stato aggiunto alla definizione del modello, ma io aggiungo solo in caso:

<div ng-click="addOnClick($event)"></div> 
+0

Questo è esattamente quello che stavo cercando! Sapevo che sarebbe stato semplice: D & yeah, ho già aggiunto la definizione del modello, ma ero sicuro che tutto fosse a posto ... Grazie mille amico! –

+0

Contento di poter aiutare :) –

+18

Fai attenzione a Firefox non ha offsetX. [Usa layerX per Firefox.] (Http://stackoverflow.com/questions/8878471/return-coordinates-of-mouse-click-on-html5-canvas-using-javascript-mouse-events) –

-1

Per coloro che su angolare che utilizzano le librerie trascinando e vogliono la posizione dell'elemento che è stato trascinato:

<div ng-click="OnDrag($event)"></div> 

e nel controller

$scope.onDrag($event){ 
     console.log("X ->",$event.originalEvent.pageX,"Y ->",$event.originalEvent.pageY) 

} 
Problemi correlati