2014-12-20 5 views

ответ

31

Вы можете использовать prop() из углового jqlite. чтобы выбрать элемент, который вы можете использовать querySelector(), который возвращает первое соответствующий элемент или querySelectorAll(), которые возвращают все соответствующие элемент

angular.element(document.querySelector('yourelement')).prop('offsetLeft'); 

или если «это» действует дом элемент

angular.element(this).prop('offsetLeft'); 

Пример для DIV

вы можете ссылаться на объект DOM с $ события в HTML и передать его функции на контроллере

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

в контроллере

$scope.myfunction = function($event){ 
console.log(angular.element($event.target).prop('offsetLeft')); 

} 

Demo

app = angular.module('test',[]); 
 
app.controller('testctrl',function($scope){ 
 

 
    
 
    $scope.myfunction = function($event){ 
 
    console.log($event); 
 
off =angular.element($event.target).prop('offsetLeft'); 
 
    angular.element($event.target).text(off) 
 

 
} 
 
    
 
});
.divvy{position:absolute; left:60px; 
 
width:100px; background:red; 
 
}

 

 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-controller="testctrl" ng-app="test"> 
 
    <div class="divvy" ng-click="myfunction($event)" >Click to see position</div> 
 
    </div>

+0

Спасибо за ваш ответ. Могу ли я использовать $ scope для получения позиции? – user1995781

+0

$ scope недействителен. Элемент dom вы можете использовать имя тега ot tag в querySelector ('') –

+0

используете ли вы его в любом событии click/hover? –

Смежные вопросы