所以我有一個指令,當頁面加載時將調整內容大小以適應正確的尺寸。然而,當頁面加載時有一個服務調用來填充這個特定內容部分的模型,並且當我獲得這個元素的高度時,它的大小爲0,因爲模型在調整大小時沒有更新。我試圖在頁面加載後立即調整大小,以便用戶不會注意到在屏幕上移動的元素,但如果在更新模型後決定了元素的大小,則不太可能。動態大小調整和AngularJS模型
有什麼方法可以計算消化後部分的高度或獲得適當的消化前高度嗎?
myApp.directive('resize', function() {
return function(scope, element) {
var htmlHeight = angular.element("html").height();
var headerHeight = angular.element("#page-header").height();
var dashboardHeight = angular.element(".top-dashboard").height(); // Returns 0 because of pre-loaded data not existing
var totalHeight = htmlHeight - headerHeight - dashboardHeight;
scope.$on('$viewContentLoaded', function() {
element[0].style.height = totalHeight + 'px';
});
}
});
上面有指令的HTML:
<section class="top-dashboard row full" resize>
<div class="small-3" ng-include src="'partials/location.html'"></div>
</section>
更新1:我覺得做一個決心已預裝了會照顧好它的控制器前的數據,但高度仍然返回0.
更新2:也許這是一個更大的問題,因爲它是一個包含模板的事實?尤其是看到在超時中包裝它根本沒有幫助,也沒有做出決定。
它實際上正在觀察那個臨時變量,它令人驚訝地發現它。我的猜測會是因爲它在我加載帶有指令的新html時重新評估指令,重新評估變量並觸發$ watch。頁面被調用,然後服務被觸發並加載動畫顯示,然後我從服務調用更新模型。調整大小需要足夠通用以在所有頁面上工作。我不想在每個控制器上覆制粘貼廣播;其中,美元手錶的表現是否超過美元? –
'$ watch'的性能成本大於'$ on'。你可以從你的服務中做你的廣播,這將是更通用的。或者,您可以使用javascript來觀看'onresize'事件的'small-3'。 –
那麼,我實際上試圖在控制器加載之前嘗試填充模型,希望它會使用更新後的模型信息預先渲染該部分(使用resolve)。不過,我認爲模板被編譯並放置在DOM中以及模型更新模板/ DOM之間存在脫節,因爲無論如何,高度仍然返回0。無論是該事件隊列還是事件隊列都被作爲低優先級摘要。 –