[英]How I can parse an array (from function) inside ng-repeat
Here is my prg-ctrl.js
: 这是我的prg-ctrl.js
:
$scope.getDataOfProject = function(project, year){
var projectData = project.data[year];
var smthData = [];
for (var i = 1; i <= 12; i++) {
if (projectData[i]) {
smthData.push(projectData[i]);
} else {
smthData.push(0);
}
}
return smthData;
};
here is snippet of a JSON: 这是JSON的代码段:
"projects": [
{
"id": 1,
"data": {
"2016": {
"12": 18
},
"2017": {
"1": 17.6,
"2": 10.1,
"3": 33.3,
"4": 4.30
}
},
.......
Then in prj.html
file I have ng-repeat
: 然后在prj.html
文件中,我有ng-repeat
:
<div class="col-md-9">
<div ng-repeat="entity in getDataOfProject(project, 2016)">{{entity}}</div>
</div>
but my <div class="col-md-9">
still empty. 但我的<div class="col-md-9">
仍然为空。 But when I put smth like: 但是当我把这样的东西放进去时:
<div class="col-md-9">
<div>{{getDataOfProject(project, 2016)}}</div>
</div>
I can see my data. 我可以看到我的数据。 What am I doing wrong? 我究竟做错了什么?
The problem is related to the fact that there might be duplicates in the array results, hence you may see a warning (or error) in the console. 该问题与以下事实有关:阵列结果中可能存在重复项,因此您可能会在控制台中看到警告(或错误)。 To avoid such, use track by
: 为了避免这种情况,请使用track by
:
<div class="col-md-9">
<div ng-repeat="entity in getDataOfProject(project, 2016) track by $index">{{entity}}</div>
</div>
Also, make sure you properly check whether keys exists in your original object: 另外,请确保正确检查原始对象中是否存在键:
$scope.getDataOfProject = function(project, year){
if (typeof(project.data[year]) === "undefined") {
return [];
}
var projectData = project.data[year];
var smthData = [];
for (var i = 1; i <= 12; i++) {
if (projectData[i]) {
smthData.push(projectData[i]);
} else {
smthData.push(0);
}
}
return smthData;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.