我已經爲你的問題的解決方案。首先我會向你解釋我所做的以及爲什麼我這樣做。
Angular的一個基本原則是,你應該避免在你的控制器中處理div元素之類的DOM元素,而是在指令中完成與DOM元素相關的大部分事情。
指令允許您將函數綁定到特定的dom元素。在這種情況下,你想要綁定一個函數到你的第一個div,它獲取元素的高度和寬度並將它暴露給另一個元素。我在下面評論了我的代碼,以說明我是如何實現這一目標的。
app.directive('master',function() { //declaration; identifier master
function link(scope, element, attrs) { //scope we are in, element we are bound to, attrs of that element
scope.$watch(function(){ //watch any changes to our element
scope.style = { //scope variable style, shared with our controller
height:element[0].offsetHeight+'px', //set the height in style to our elements height
width:element[0].offsetWidth+'px' //same with width
};
});
}
return {
restrict: 'AE', //describes how we can assign an element to our directive in this case like <div master></div
link: link // the function to link to our element
};
});
現在,我們的範圍可變樣式應該包含與我們的「主」元件的電流的寬度和高度的物體即使我們主元件的大小變化。
接下來,我們要應用這種風格到另一個元素,我們可以實現像這樣:
<span master class="a">{{content}}</span>
<div class="b" ng-style="style"></div>
正如你所看到的跨度上面是我們在div主元素是我們的「奴隸」,這將始終具有與主人相同的寬度和高度。 ng-style="style"
意味着我們將包含在我們的作用域變量scope中的css樣式添加到span中。
我希望你能理解我爲什麼以及如何得到這個解決方案,here is a plnkr,演示了我的解決方案。
感謝這麼多如此詳細的解答 – lesek 2015-02-10 08:09:18
這是不會,如果你有更多的工作而不是頁面上的其中一個 – 2017-10-28 03:34:21