我正在使用angularJS和requirejsviaangularAMD来连接一个复杂的应用程序。
我的一个州有两个简单的观点,如下所示:
$stateProvider
.state("common", {
url: "/",
views: {
"view1": {
templateUrl: "view1.tpl.html"
},
"view2": {
templateUrl: "view2.tpl.html"
}
}
});
html
<div ui-view="view1"></div>
<div ui-view="view2"></div>
View1有一个指令:
.directive('checkViewOneBoxWidth', function ($timeout) {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
var linkFunctionAfterDomComplete = function () {
console.log(elem[0].scrollWidth);
}
$timeout(linkFunctionAfterDomComplete, 0);
}
}
})
并且view2有一个样式表,可以对页面应用一些样式,包括更改容器的height和。widthview1
我希望函数在 DOM 被样式表修改后linkFunctionAfterDomComplete计算元素height和width属性,所以我将函数包装在.view2linkFunctionAfterDomComplete$timeout()
console.logfrom here 是在checkViewOneBoxWidth样式表中的样式view2修改此元素的大小之前报告此元素的大小,尽管我们希望在应用样式之后$timeout导致linkFunctionAfterDomComplete函数计算此元素的大小view2DOM 已完成。
在完全渲染并应用所有样式后,如何linkFunctionAfterDomComplete计算反映元素真实状态的元素属性?