所以我有一个指令,当页面加载时将调整内容大小以适应正确的尺寸。然而,当页面加载时有一个服务调用来填充这个特定内容部分的模型,并且当我获得这个元素的高度时,它的大小为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。无论是该事件队列还是事件队列都被作为低优先级摘要。 –