在AngularJS

时间:2016-04-21 08:17:35

标签: javascript html angularjs angularjs-ng-click

我想知道使用ng-click的输入框的位置。以下是控制器代码,我在其中安慰事件pageXclientX,但不是给出输入元素的位置,而是根据鼠标点击给出值。如果有任何属性可以提取此信息,请告诉我。 (顺便说一下,我不是在寻找指令方式)

控制器代码 -

myApp.controller('mainCtrl', function($scope){
  $scope.clicked = function(e) {
    console.clear();
    console.log(e);
    console.log(e.pageX);
    console.log(e.clientX);
  };
})

HTML代码 -

<input type="text" ng-click="clicked($event)" />

工作Plnkr - http://plnkr.co/edit/f9HoVeSUwKUe9QSOB2jC?p=preview

2 个答案:

答案 0 :(得分:2)

简单! :)

myApp.controller('mainCtrl', function($scope){
  $scope.clicked = function(e) {
    var el = e.currentTarget;
    var place = el.getBoundingClientRect();
    console.log(place);
    console.log('X coordinate - '+place.x);
    console.log('Y coordinate - '+place.y);
  };
})

答案 1 :(得分:1)

  

使用 Element.getBoundingClientRect() 而不是e.target

Event.target 对调度事件的对象的引用。

Element.getBoundingClientRect()方法返回元素的大小及其相对于视口的位置。

&#13;
&#13;
var myApp = angular.module('app', []);
myApp.controller('mainCtrl', function($scope) {
  $scope.clicked = function(e) {
    console.log(e.target.getBoundingClientRect());
  };
})
&#13;
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.21/angular.min.js"></script>
<div ng-app="app" ng-controller="mainCtrl">
  <input type="text" ng-click="clicked($event)" />
</div>
&#13;
&#13;
&#13;