我正在尝试在ng-repeat使用的数组内的对象上设置position属性。
<div ng-repeat="item in items track by $index" ng-init="pos = $index + 1; item.position = pos">
<span>{{pos}}</span>
</div>
最初它设置属性很好,但是,只要在模型之后重新编译HTML(我在数组中添加/删除/移动元素),就会更改pos
变量,并且显示正确的位置。但是它不会更新item.position!
答案 0 :(得分:1)
属性的分配确实不属于您的模板。理想情况下,您应该在控制器中分配position
属性。你可以在你的控制器中使用这样的东西
$scope.$watchCollection('items', function() {
angular.forEach($scope.items, function(item, idx) {
item.position = idx + 1;
});
})
然而,我真的质疑这样做的必要性。项目在数组中的位置提供了您需要的所有信息。
答案 1 :(得分:1)
有趣的黑客:
<li ng-repeat="item in items track by $index">
{{item.position=$index+1}}
<span>{{item.position}}</span>
</li>
不会在生产中建议
的 DEMO 强>