将元素传递给Angular指令

时间:2013-08-06 22:32:44

标签: javascript angularjs

我有一个类似的简单弹出指令 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元素的位置进行一些计算并重新定位弹出窗口)

1 个答案:

答案 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);
...

fiddle