0
我正在使用twitter bootstrap,angular和jquery來試圖解決這個問題。如何通過使用上面的div和下面的div來動態更新div的最大高度?
我有一個左邊的div裏面有4個div。這個左手div的寬度爲300px,高度爲100%。
第一個div從隱藏起始,可以更改大小,因爲它顯示三種不同的錯誤消息之一,以及用戶所做的選擇。這個div在它的一些子元素上有一個ng-show屬性和ng-show屬性。
第二個div始終是相同的大小,以及第四個div。第四個div的位置永遠在底部。
第三個div裏面有個表格。我想在此表上設置最大高度,以便我可以在此div上設置overflow-y:auto。
有沒有辦法看第二個div的底部,以便我可以計算出可用高度?
我有這樣的代碼,但是,它執行的NG-顯示完成之前,使其錯誤的大部分時間:
app.directive('adjustTableHeight', ['$window', function($window) {
return {
restrict: 'A',
link: function(scope, element) {
var w = angular.element($window);
scope.getUpperDivBottom = function() {
var upperDiv = angular.element('#secondDiv'),
upperDivBottom = upperDiv && upperDiv.length ? (upperDiv.position().top + upperDiv.outerHeight(true)) : 0;
return Math.round(upperDivBottom);
};
scope.$watch(scope.getUpperDivBottom, function (newValue, oldValue) {
var lowerDiv = angular.element('#fourthDiv'),
lowerDivTop = lowerDiv && lowerDiv.length ? lowerDiv.position().top : 0;
console.log('upperDivBottom', newValue, oldValue);
console.log('lowerDivTop', lowerDivTop);
console.log('height', Math.round(lowerDivTop) - newValue);
element.css('max-height', Math.round(lowerDivTop) - newValue);
}, true);
w.on('resize', _resize);
scope.$on('$destroy', function() {
w.off('resize', _resize);
});
function _resize() {
scope.$apply();
};
}
};
}]);
看看承諾。 – Gjohn 2014-11-05 23:34:57
關鍵是我不想編碼每個項目,可以改變我的div的大小,這是至少5在這一點上,可能會更晚。沒有可以在渲染之後完成的檢查,而不是在摘要之後?我之前使用回調函數在普通JavaScript中編寫了這個代碼,這對我的承諾並沒有什麼不同。我希望有一個更清潔的解決方案。 – user1209809 2014-11-06 16:14:50