angularjs - 限制 AngularJS ng 风格
问题描述
ng-style
我正在通过我的自定义方法根据视口计算容器高度。
一切正常,但即使元素已设置样式,它也会继续调用该方法。我有大量需要设置样式的 DOM 元素。这就是为什么,我不能允许所有元素的连续执行。请注意,我不能使用ng-class
,因为每个元素都包含不同的内容。由于元素数量不受限制,因此无法使用控制器范围变量。
HTML:
<div class="myElement" ng-style="styleElement('myElement')">
...
...
</div>
功能:
$scope.styleElement = function (elementCls) {
var elementToSet = $('.'+elementCls+':visible');
if(elementToSet.length){
var winHeight = $( window ).height();
var eTop = elementToSet.offset().top;
if(eTop == 0){
var elemChilds = elementToSet;
var elemChildsLen = elemChilds.length;
for(var i=0;i<elemChildsLen;i++){
var elem = elemChilds[i];
var r = elem.getBoundingClientRect();
if(r.top != 0){
eTop = r.top;
i= elemChildsLen;
}
}
}
var nScrollHeight = winHeight - eTop - 20;
return {
'height': nScrollHeight + 'px',
'overflow-x': 'hidden',
'overflow-y': 'auto'
};
}
};
我尝试使用 acustom directive
但绑定DOM
或编写 awatcher
对我来说不是一个更可取的解决方案,因为性能原因。提前致谢!
解决方案
使用一次绑定,它只会调用styleElement
一次。
<div class="myElement" ng-style="::styleElement('myElement')">
...
...
</div>
推荐阅读
- html - 如何在 Angular 7 项目中使用标签渲染图像?
- javascript - 从同一个数据库中获取不同的记录
- google-apps-script - 尝试创建谷歌驱动器文件夹的树视图
- ruby - 将文本放在 ruby 的 transfer.sh/file.io 上
- c# - 如何使用 Visual Studio WebAPI 项目将外部 API URL + 凭据路由到我的本地主机 URL?
- python-3.x - 根据 2 个数据框列中的值创建计数器列
- javascript - 如何将 scriptlet 设置为 scriptlet javascript 变量
- regex - .htaccess 重定向到带有条件页面的 https
- bash - bash遍历文件以查找字符串的开头
- node.js - 为什么我的查询在 mongo shell 中显示数据而不是节点?