gpt4 book ai didi

javascript - 在 AngularJS 中不使用 JQuery 获取多个元素的高度

转载 作者:行者123 更新时间:2023-11-28 06:13:06 24 4
gpt4 key购买 nike

对 Angular 还很陌生,但仍在尝试理解一些事情。我需要获取仪表板上多个项目的高度。我看过这个答案: Get HTML Element Height without JQuery in AngularJS但是,我无法弄清楚如何让它适用于多个项目。当然,我不需要为每个元素编写单独的指令。所以玩这个Plunker ,我将 html 更改为下面的内容,但两个元素获得相同的值。

脚本.js:

angular.module('myModule', [])
.directive('myDirective', function($timeout) {
return {
restrict: 'A',
link: function(scope, element) {
scope.height = element.prop('offsetHeight');
scope.width = element.prop('offsetWidth');
}
};
})
;

和 html:

<!DOCTYPE html>
<html>

<head>
<script data-require="angular.js@*" data-semver="1.2.13" src="http://code.angularjs.org/1.2.13/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>

<body ng-app="myModule">

<h1 my-directive>Hello Plunker! width: {{width}}, height: {{height}}
</h1>
<h3 my-directive>Smaller Hello Plunker! width: {{width}}, height: {{height}}
</h3>
</body>

</html>

最佳答案

指令没有作用域,因此它们将值存储在$rootScope上。这些值反射(reflect)了最后执行的指令的高度和宽度。修复您的指令以使用继承范围或隔离范围

angular.module('myModule', [])
.directive('myDirective', function($timeout) {
return {
restrict: 'A',
//set scope to inherited
scope: true,
//OR use isolate scope
//scope: {},
link: function(scope, element) {
scope.height = element.prop('offsetHeight');
scope.width = element.prop('offsetWidth');
}
};
})
;

通过设置 scope 属性,$compile 服务将创建一个新作用域(继承隔离) 用于指令存储该指令特有的值。

有关指令范围的更多信息,请参阅 AngularJS Comprehensive Directive API -- scope .

关于javascript - 在 AngularJS 中不使用 JQuery 获取多个元素的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36204657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com