0

我有一段时间试图让手动 HTML 布局修复程序在首次加载路线时始终如一地运行。(我使用的是 Bootstrap,但客户端的布局是一个非常规的网格。)我做了很多搜索并尝试了几个修复。看着没用$viewContentLoaded。使用angular.element(document).ready()是不行的。使用标准 jQuery$(document).ready()不起作用。ng-init没用。许多人建议在$timeout没有指定延迟的情况下使用该服务,该延迟应该在视图加载后运行。它至少有时是成功的。

这是我的控制器中的块:

var w = angular.element($window);
var dimensionFixer = function () {
    angular.element('#home-bottom').css("height", angular.element('#top').height());
    angular.element('#logo-box').css("height", angular.element('#home-top-left').height() - angular.element("#home-top-right-partial").height() - 15);
};
w.bind('resize', dimensionFixer);
$timeout(dimensionFixer);

有时它会起作用。有时它不会。我也尝试过结合$viewContentLoadedand $timeout。它总是适用于调整大小。浏览器功能是否$timeout发生了变化?

谢谢!

4

1 回答 1

1

选项 1:在超时范围内包含调整大小的元素。您恢复的代码将是

var w = angular.element($window); $timeout(function(){ var dimensionFixer = function ({ angular.element('#home-bottom').css("height", angular.element('#top').height()); angular.element( '#logo-box').css("height", angular.element('#home-top-left').height() - angular.element("#home-top-right-partial").height( ) - 15); }; w.bind('resize', dimensionFixer); })

选项 2:显式调用$scope.$apply更新 DOM

于 2017-11-02T18:45:06.763 回答