给定以下简单的模块和控制器:
var t = angular.module("test", []);
t.controller("TestCtrl", function ($scope, $timeout) {
$scope.arr = [
"elem1",
"elem2",
"elem3"
];
$scope.getDate = function () {
return +new Date();
};
$timeout(function () {
$scope.arr[2] = "< I should have a different timestamp to the two above me now";
}, 2000);
});
以及以下简单模板:
<ul ng-app="test" ng-controller="TestCtrl">
<li ng-repeat="x in arr">{{getDate()}} {{arr[$index]}}</li>
</ul>
当模型属性中的单个值发生变化时,有没有一种方法可以使ng-repeat
指令仅更新 DOM 中的必要元素,而不是重建整个元素集?li
arr
我希望能够呈现该列表,以便在超时后修改第三个元素时,前两个元素的时间戳不会改变。
这是一个包含上述示例的小提琴。
编辑:请注意,此示例中的时间戳仅用于演示问题。我的真实代码要复杂得多,并且由于 Angular 每次都重新创建的 DOM 节点的数量而受到性能问题的困扰。在这种情况下,将时间戳添加到模型不是解决方案。