这可能是我构建应用程序的方式中的问题,但我仍然需要能够通过我的items数组访问dom元素:
$scope.items = [{"src": src, "url": url, "title": title, "top": 0, "left": -500 }];
使用以下命令绑定到html:
<div class="block" ty-stacked-block ng-repeat="item in items" ng-style="{ 'top' : item.top+'px', 'left' : item.left+'px' }">
<a href="{{ item.url }}" title="{{ item.title }}">
<img ng-src="{{ item.src }}" alt="{{ item.title }}" />
</a>
<br />
<p>{{ item.title }}</p>
</div>
基本上我有另一段代码想要运行$ scope.items并更改div的位置(基于每个div的高度)。
scope.repositionItems = function() {
_.each(scope.items, function(item) {
// TODO get item's height somehow
});
};
答案 0 :(得分:3)
我在div“item - {{$ index}}”中添加了一个id,所以我可以通过我的循环中的id来获取它。不觉得非常“棱角分明”,但它有效!
<div id="item-{{ $index }}" class="block" ty-stacked-block ng-repeat="item in items" ng-style="{ 'top' : item.top+'px', 'left' : item.left+'px' }">
<a href="{{ item.url }}" title="{{ item.title }}">
<img ng-src="{{ item.src }}" alt="{{ item.title }}" />
</a>
<br />
<p>{{ item.title }}</p>
</div>
答案 1 :(得分:0)
我不确定为什么你的项目列表中有布局属性,希望你没有充分的理由,这会有所帮助。如果您打算将多个元素块叠加在一起,每个元素块都包含项目的结果,那么您应该让角度重复项目而不是自己定位它们。 class ='block'中的样式属性应该创建所需的间距和布局。我已将代码包装在无序列表中,并将div标记更改为li标记。您始终可以在li标记内保留div。如果你不想用ul包装,那么在class =“block”
中应用float:left <ul>
<li class="block" ng-repeat="item in items">
<a href="{{ item.url }}" title="{{ item.title }}">
<img ng-src="{{ item.src }}" alt="{{ item.title }}" />
</a>
<br />
<p>{{ item.title }}</p>
</li>
</ul>
.block {
background-color:#fff;
width:400px;
padding:10px;
border-radius:8px;
margin:10px;
position: relative;
}