2013-08-06 46 views
7

Tôi có một chỉ thị cửa sổ bật lên đơn giản tương tự như https://github.com/angular-ui/bootstrap/blob/master/src/modal/modal.jsđèo yếu tố để chỉ thị góc

tôi cần phải xác định vị trí cửa sổ bật lên của tôi gần yếu tố đó bắt đầu mở.

Cách tốt nhất để thực hiện điều này là gì? Sẽ bắt người khởi xướng với ng-click = "open ($ event)" và chuyển sang công việc chỉ thị? (Đây là mẫu của nguyên tố này chụp http://jsfiddle.net/Amnesiac/5z5Qz/3/)

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

Làm thế nào để sau đó vượt qua angular.element này (e.srcElement) để chỉ thị? (Chỉ sau đó sẽ làm một số tính toán dựa trên vị trí đó thông qua yếu tố dom và tái vị trí popup)

+0

tôi nghĩ rằng bạn muốn để ràng buộc một bộ điều khiển trong phạm vi chỉ thị để yo u có thể kiểm soát phạm vi chức năng của bạn. –

Trả lời

8

Vượt qua nó như bạn sẽ bất kỳ tài sản khác phạm vi, ví dụ, 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

Làm cách nào để lấy giá trị của thuộc tính chiều rộng ra khỏi 'giá trị' đó? – dzolnjan

+0

@dzolnjan, phần tử DOM có sẵn dưới dạng 'giá trị [0]', do đó chiều rộng có sẵn dưới dạng 'giá trị [0] .clientWidth'. –

+0

Đây có phải là cách tốt nhất để làm điều này không? – prasanthv

Các vấn đề liên quan