2014-01-14 76 views
0

在指令內我想獲得getBoundingClientRect()的結果getBoundingClientRect(),該元素不在指令的element附近。獲取指令外的元素的邊界矩形

我應該怎麼辦?只返回該對象的服務?可以在服務中使用DOM邏輯嗎?

回答

1

我建議傳遞指令需要與之交互的元素的id作爲指令的一個屬性。然後使用文檔對象獲取該元素的句柄。

參見:http://jsfiddle.net/afX63/6/

顯然需要直接與原始DOM元素的工作訪問你感興趣的信息

您的標記:

<my-directive handle-id="thatOne"/> 

<div id="thatOne">Your directive can find this element easily now</div> 

您的指令:

app.directive('myDirective', function() { 
    return { 
     link: function (scope, elem, attrs) { 
      var theHandle = angular.element(document.getElementById(attrs.handleId)); 
      theHandle.text('Changed it'); 
     } 
    } 
}); 
+0

我想傳入一個選擇器,但是如果有相同指令的很多實例,每個實例都會無用地查詢DOM。我只想問一次,並得到第一個查詢後沒有改變的邊界矩形。 – Francisc