Javascript 默认情况下,AngularJS ng如何重复跟踪项目?
我知道您可以使用Javascript 默认情况下,AngularJS ng如何重复跟踪项目?,javascript,angularjs,angularjs-ng-repeat,Javascript,Angularjs,Angularjs Ng Repeat,我知道您可以使用track by expr指定如何在ng repeat指令中键入项目 但是如果没有跟踪,AngularJS如何识别项目 例如,我是否可以通过更改对象来控制跟踪对象的方式,而不使用track by 从文档中: 如果未指定跟踪函数,则ng repeat将按集合中的标识关联元素 但这并不清楚。“集合中的标识”是什么意思?如果没有轨迹表达式,将计算基于该值的哈希。 如果您需要那种级别的控制,可以使用跟踪表达式提供自己的函数来计算散列 <!DOCTYPE html> <h
track by expr
指定如何在ng repeat
指令中键入项目
但是如果没有跟踪,AngularJS如何识别项目
例如,我是否可以通过更改对象来控制跟踪对象的方式,而不使用track by
从文档中:
如果未指定跟踪函数,则ng repeat将按集合中的标识关联元素
但这并不清楚。“集合中的标识”是什么意思?如果没有轨迹表达式,将计算基于该值的哈希。 如果您需要那种级别的控制,可以使用跟踪表达式提供自己的函数来计算散列
<!DOCTYPE html>
<html>
<head>
<script data-require="angular.js@*" data-semver="1.3.0" src="//code.angularjs.org/1.3.0/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="myCtrl">
<h1>User Defined Indexer</h1>
<ul>
<li ng-repeat="item in data track by getTracker()">{{item}}</li>
</ul>
<script>
var app=angular.module("app",[]);
app.controller("myCtrl",function($scope){
$scope.data=[1,2,3,4,5]
$scope.getTracker = function(v){
return Math.random();
}
});
angular.bootstrap(document,["app"]);
</script>
</body>
</html>
用户定义索引器
- {{item}
var-app=angular.module(“app”,[]);
app.controller(“myCtrl”,函数($scope){
$scope.data=[1,2,3,4,5]
$scope.getTracker=函数(v){
返回Math.random();
}
});
引导(文档,[“应用程序]);
如果对对象关键点执行重复,则跟踪标识符就是关键点
e.g. ng-repeat="(key,value) in thingies"
对于数组,跟踪标识符是通过为每个数组项调用hashKey函数来确定的。hashKey函数的注释表示如何确定:
- 字符串就是字符串
- number是字符串形式的数字
- 对象是对该对象调用$$hashKey函数的结果或唯一生成的id
- 这也被分配给对象的$$hashKey属性
track by
表达式,则默认情况下angular将按$$hashkey
进行跟踪,angular会自动将其插入到对象列表中$$hashkey
被称为集合的标识
您可以在此处找到更多信息是否可以直接从对象提供我自己的哈希值,而不必使用
track by
?我基本上希望我的HTML模板不需要知道每次对象出现在ng repeat
afaik中时如何识别它。默认设置是:它将expando属性$$hashKey注入到JavaScript对象中。请查看感谢您的链接。我也看到了。@tenfour所以也许track by对于散列没有那么有用?