【发布时间】:2017-10-14 09:11:52
【问题描述】:
我正在使用 Angular JS 1.6 和 UI 路由器进行路由。我正在尝试创建一个完全水平的布局。它基本上是来自 Angular 服务的内容“提要”,它使用一个组件循环遍历每个项目并输出它。
我的问题是如何动态计算所有项目宽度的总和并将其应用于我的容器。这是一个html示例。
<div class="container">
<div class="container-row">
<keyfeed>
<!-- NG repeat results -->
<div>Column 1</div>
<div>Column 2</div>
</keyfeed>
</div>
</div>
.container div 是绝对定位的,.container-row div 应用了任意 10,000 像素,以确保内容永远不会换行(水平滚动站点)。我不想将 .container-row 设置为 10000px,而是想遍历项目并计算容器的宽度。这带来了一些问题。该组件显示在多个路由上,因此我需要根据 UI 路由更改计算此组件。
如果我在 jQuery 中执行此操作,它会看起来像这样
$(window).load(function() {
// This works only on window.load which isn't helpful for angular...
var containerWidth = 0;
$('.c-key').each(function() {
containerWidth += $(this).outerWidth();
});
$('.container-row').css({
'width': containerWidth,
'min-width': '100vh'
});
});
即使在 run 函数中,这也不起作用。关于如何使用组件和 UI 路由器解决此问题的任何想法?
【问题讨论】:
-
我建议对属性类型指令做同样的事情。将它放在与 ng-repeat 相同的标签上。
-
为什么需要计算宽度?不能简单的css解决这个吗?也许你可以创建 plunk 演示问题 - 好像你正在尝试发明轮子......
-
@PetrAveryanov 我认为他可能在父容器中有其他东西,但他仍然希望它的宽度适合容器行的宽度。
-
列宽 300 像素,需要无限向右内联。我不知道有更好的方法来做到这一点,但在父容器上设置溢出-x,但为了让它们保持内联,列宽需要与列包装器宽度相匹配。 @PetrAveryanov
标签: jquery angularjs angular-ui-router