Javascript 指令不';不要总是在页面加载时触发
我有一个指令,它获取一个特定元素的高度并将其应用于另一个元素 但由于某些原因,它并不总是在页面加载时启动。我认为,在某些情况下,加载元素的时间太长,如果只在元素完全加载后处理它,这可能是一个更明智的想法。它似乎可以很好地调整页面大小(有时) 这是为什么?我如何修复它 例如:Javascript 指令不';不要总是在页面加载时触发,javascript,angularjs,Javascript,Angularjs,我有一个指令,它获取一个特定元素的高度并将其应用于另一个元素 但由于某些原因,它并不总是在页面加载时启动。我认为,在某些情况下,加载元素的时间太长,如果只在元素完全加载后处理它,这可能是一个更明智的想法。它似乎可以很好地调整页面大小(有时) 这是为什么?我如何修复它 例如: // grab information of div height here <div class="col-sm-6" id="left-photos" element-size key="leftPhot
// grab information of div height here
<div class="col-sm-6" id="left-photos" element-size key="leftPhotoSize"></div>
// apply it here
<div class="col-sm-6" ng-style="{ 'height': leftPhotoSize.height + 30 + 'px' }"></div>
请将度量函数放在$watch函数中,然后再加上scope。$apply()。我该怎么做?我可以看一个代码示例吗?当然可以,u[dated.谢谢!
angular.module('adsomaApp')
.directive('elementSize', function ($timeout, $window) {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var height, width;
var measure = function () {
height = element[0].offsetHeight;
width = element[0].offsetWidth;
if (attrs.key) {
scope[attrs.key] = {
height: height,
width: width
};
}
scope.elementSize = {
height: height,
width: width
};
};
$timeout(function () {
measure();
});
$window.load(function() {
measure();
});
angular.element($window).bind('resize', function () {
measure();
scope.$digest();
});
}
};
});