我有一个类似的简单弹出指令 https://github.com/angular-ui/bootstrap/blob/master/src/modal/modal.js
我需要将弹出窗口靠近启动打开的元素。
最好的方法是什么?用ng-click =“open($ event)”捕获启动器并传递给指令工作? (这是捕获http://jsfiddle.net/Amnesiac/5z5Qz/3/)
的此元素的示例$scope.open= function (e) {
var elem = angular.element(e.srcElement);
}
如何将此angular.element(e.srcElement)传递给指令? (然后指令将根据传递的dom元素的位置进行一些计算并重新定位弹出窗口)
答案 0 :(得分:8)
像传递任何其他范围属性一样传递它,例如modal el="clickedElement"
:
<button id="myId" ng-class="{'blueBg': blueBg}" ng-click="hi($event)">click me</button>
<div modal el="clickedElement"></div>
angular.module('Test',[])
.controller('Foo', function ($scope, $element) {
$scope.blueBg = false;
$scope.hi = function (ev) {
$scope.blueBg = true;
$scope.clickedElement = angular.element(ev.srcElement);
}
})
.directive('modal', function() {
return {
link: function(scope, element, attrs) {
scope.$watch(attrs.el, function(value) {
if(value !== undefined) {
console.log('element=',value);
...