2013-08-06 19 views
7

Ich habe eine einfache Popup-Richtlinie ähnlich wie https://github.com/angular-ui/bootstrap/blob/master/src/modal/modal.jsPass Element Angular Richtlinie

Ich brauche mein Pop-up der Nähe von Elemente zu positionieren, dass die offenen eingeleitet.

Was ist der beste Weg, dies zu machen? Würde man den Initiator mit ng-click = "open ($ event)" erfassen und an die Anweisung übergeben? (Hier ist Probe dieses Element die Erfassung http://jsfiddle.net/Amnesiac/5z5Qz/3/)

$scope.open= function (e) { 
    var elem = angular.element(e.srcElement); 
} 

Wie kann ich dann diese angular.element passieren (e.srcElement) nach Richtlinie? (Richtlinie würde dann einige Berechnungen basierend auf Position dieser gab dom Element und Wieder Position die Popup)

+0

ich glaube, Sie einen Controller in der Richtlinie binden wollen, so yo Sie können den Umfang Ihrer Funktionen steuern. –

Antwort

8

Direkt wie jede andere Umfang Eigenschaft, zB 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

+0

Wie wird der Wert der width-Eigenschaft aus diesem "Wert" herausgeholt? – dzolnjan

+0

@ dzolnjan, das DOM-Element ist als 'value [0]' verfügbar, die Breite ist also als 'value [0] .clientWidth' verfügbar. –

+0

Ist dies immer noch der beste Weg, dies zu tun? – prasanthv

Verwandte Themen