我想有一个像这样的dom元素列表:
<div ng-repeat="element in elements track by $index"
data-index="$index" ng-init="element.order = $index"> </div>
If the elements are 3 then
elements[0].order = 0;
elements[1].order = 1;
elements[2].order = 2;
我试图在字段'order'上的每个元素上绑定$ index。显然,数据索引不是双向绑定,并且在我的代码中用新对象替换元素后,ng-init效果消失了。我希望能够根据DOM顺序自动更改元素的“顺序”字段(例如,如果我有一个拖放重新排序机制)。如何在没有Javascript的情况下通过在HTML中使用角度绑定来完成这项工作?
答案 0 :(得分:1)
我在git(https://github.com/angular/angular.js/issues/12312)中提出了这个问题,而有角度的团队回答说有核心支持:
ng-attr-xxx
可用于将html订单字段与模型订单字段
所以这个:
<div ng-repeat="element in elements track by $index" ng-attr-xxx="element.order = $index"> </div>
正在做我想做的事。
:)
答案 1 :(得分:0)
也许这就是你想要的东西?
<div ng-repeat="element in elements track by $index | orderBy:'order'" ng-model="element.order" ng-init="element.order = $index"></div>
使用ng-init
被认为是不好的,所以我不建议这样做。你应该在控制器中初始化它。
答案 2 :(得分:0)
为什么需要绑定它?您始终可以使用indexOf
var elements = [100,200,300,400];
var index = elements.indexOf(200); // 1
如果您需要HTML中的值,您也可以在那里使用
<div ng-show="elements.indexOf(element) == 3">