我如何在 ng-repeat 中解析数组(从函数)
How I can parse an array (from function) inside ng-repeat
这是我的 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;
};
这里是 JSON 的片段:
"projects": [
{
"id": 1,
"data": {
"2016": {
"12": 18
},
"2017": {
"1": 17.6,
"2": 10.1,
"3": 33.3,
"4": 4.30
}
},
.......
然后在 prj.html
文件中我有 ng-repeat
:
<div class="col-md-9">
<div ng-repeat="entity in getDataOfProject(project, 2016)">{{entity}}</div>
</div>
但我的 <div class="col-md-9">
仍然是空的。但是当我把 smth 放在:
<div class="col-md-9">
<div>{{getDataOfProject(project, 2016)}}</div>
</div>
我可以看到我的数据。我做错了什么?
问题与数组结果中可能存在重复项有关,因此您可能会在控制台中看到警告(或错误)。为避免这种情况,请使用 track by
:
<div class="col-md-9">
<div ng-repeat="entity in getDataOfProject(project, 2016) track by $index">{{entity}}</div>
</div>
此外,请确保正确检查原始对象中是否存在键:
$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;
};
这是我的 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;
};
这里是 JSON 的片段:
"projects": [
{
"id": 1,
"data": {
"2016": {
"12": 18
},
"2017": {
"1": 17.6,
"2": 10.1,
"3": 33.3,
"4": 4.30
}
},
.......
然后在 prj.html
文件中我有 ng-repeat
:
<div class="col-md-9">
<div ng-repeat="entity in getDataOfProject(project, 2016)">{{entity}}</div>
</div>
但我的 <div class="col-md-9">
仍然是空的。但是当我把 smth 放在:
<div class="col-md-9">
<div>{{getDataOfProject(project, 2016)}}</div>
</div>
我可以看到我的数据。我做错了什么?
问题与数组结果中可能存在重复项有关,因此您可能会在控制台中看到警告(或错误)。为避免这种情况,请使用 track by
:
<div class="col-md-9">
<div ng-repeat="entity in getDataOfProject(project, 2016) track by $index">{{entity}}</div>
</div>
此外,请确保正确检查原始对象中是否存在键:
$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;
};