我在Angular应用程序中使用Foundation-Apps库。
我正在尝试创建一个组件网格(数量不等(,单击该网格时,会导致面板位于单击的元素所属的行的顶部。
面板应覆盖整行,但仅覆盖该行。
到目前为止,我得到的更改了数据并显示面板正常。 但它始终位于网格的顶部(考虑到它在代码中的位置,这并不奇怪(。
您会注意到该面板实际上包含生成 html 的指令的实例,因此将面板包含在其中是行不通的(它会进入无限循环(。
有什么建议吗?
代码现状:
<div class="grid-block wrap">
<div zf-panel="" id="objectDetailOverlayPanel"
class=" objectDetailOverlayPanel"
position="left"
style="width: 100%; height: auto; box-shadow: none;">
<a href="#" zf-close="">
<img src="..."
class="float-right"
/>
</a>
<myDirective anObject="vm.selectedObject" expanded="true"/>
</div>
<!-- generate grid of objects in rows of 4 -->
<div ng-repeat="anObject in vm.objects" class="grid-content small-3">
<myDirective anObject="anObject" expanded="false" detail-toggleable="true"
ng-click="vm.selectedObject = anObject"/>
</div>
</div>
如果其他人发现这一点,我最终在我的指令控制器中添加了一个函数,该函数在面板关闭链接上单击时被调用。
positionOverlayPanel() {
const overlayPanel = document.getElementById('assetDetailOverlayPanel');
angular.element(overlayPanel)
.css('top', `${this._$element[0].offsetTop}px`);
}
它并不漂亮,我相信有更好的方法,但它有效!