有没有办法在没有 javascript、使用 AngularJS 的模型上从 ng-repeat 双向绑定 $index?
Is there a way to 2-way bind $index from ng-repeat on a model without javascript, using AngularJS?
我想要一个包含 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。显然 data-index 不是双向绑定,在我的代码中用新对象替换元素后 ng-init 效果消失。我希望能够根据 DOM 顺序自动更改元素的 'order' 字段(例如,如果我有拖放重新排序机制)。如何在没有 Javascript 的情况下仅通过在 HTML 中使用 angular 绑定来完成此操作?
也许这就是您想要的?
<div ng-repeat="element in elements track by $index | orderBy:'order'" ng-model="element.order" ng-init="element.order = $index"></div>
虽然使用 ng-init
被认为是不好的,但我不建议这样做。您应该在控制器中对其进行初始化。
为什么要绑定呢?您始终可以使用 indexOf
获取数组中元素的索引
var elements = [100,200,300,400];
var index = elements.indexOf(200); // 1
如果您需要 HTML 中的值,您也可以在那里使用它
<div ng-show="elements.indexOf(element) == 3">
我在 git (https://github.com/angular/angular.js/issues/12312) 中提出了这个问题,angular 团队回应说有核心支持:
ng-attr-xxx
可用于绑定 html 订单字段与模型订单字段
所以这个:
<div ng-repeat="element in elements track by $index" ng-attr-xxx="element.order = $index"> </div>
正在做我想做的事情。
:)
我想要一个包含 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。显然 data-index 不是双向绑定,在我的代码中用新对象替换元素后 ng-init 效果消失。我希望能够根据 DOM 顺序自动更改元素的 'order' 字段(例如,如果我有拖放重新排序机制)。如何在没有 Javascript 的情况下仅通过在 HTML 中使用 angular 绑定来完成此操作?
也许这就是您想要的?
<div ng-repeat="element in elements track by $index | orderBy:'order'" ng-model="element.order" ng-init="element.order = $index"></div>
虽然使用 ng-init
被认为是不好的,但我不建议这样做。您应该在控制器中对其进行初始化。
为什么要绑定呢?您始终可以使用 indexOf
var elements = [100,200,300,400];
var index = elements.indexOf(200); // 1
如果您需要 HTML 中的值,您也可以在那里使用它
<div ng-show="elements.indexOf(element) == 3">
我在 git (https://github.com/angular/angular.js/issues/12312) 中提出了这个问题,angular 团队回应说有核心支持:
ng-attr-xxx
可用于绑定 html 订单字段与模型订单字段
所以这个:
<div ng-repeat="element in elements track by $index" ng-attr-xxx="element.order = $index"> </div>
正在做我想做的事情。
:)