好的,是的,我知道这是基本的知识,但这让我知道了。
这是代码:
myApp.controller('keyExpController', function ($scope, KeyExpDataService) {
var ctrlExp = this;
ctrlExp.keyExp = [];
$scope.company = {};
ctrlExp.achKeys = {
company: [{
achieves: [],
details: {
super: "",
whyleft: ""
}
}]
};
$scope.keyachievements = [];
$scope.compName = null;
ctrlExp.fetchKeyExp = function () {
//Resume Data
KeyExpDataService.getKeyExpData().then(function (result) {
ctrlExp.keyExp = result.data.resume.proexperience;
console.log("Result: " + ctrlExp.keyExp);
$scope.groupBy(ctrlExp.keyExp.length);
});
};
ctrlExp.fetchKeyExp();
// I group the friends list on the given property.
$scope.groupBy = function (nbrComps) {
//Set the global value for number of companies
nbrCompanies = nbrComps;
var compValue = "_INVALID_GROUP_VALUE_";
for (var i = 0; i < nbrComps; i++) {
$scope.keyachievements = ctrlExp.keyExp[i].keyachievements;
if (ctrlExp.keyExp[i].companyat !== compValue) {
$scope.company = [{
achievements: [],
details: {
companyName: ctrlExp.keyExp[i].companyat,
super: ctrlExp.keyExp[i].supervisor,
whyleft: ctrlExp.keyExp[i].reasonforleaving
}
}];
compValue = $scope.company.companyName;
$scope.compName = compValue;
//It's HERE, with the first line that I continually get the following error:
//TypeError: Cannot read property 'achieves' of undefined
//at Scope.$scope.groupBy (controllers.js:151)
//This is line 151 just below:
achievements.company[i].achieves[i] = $scope.keyachievements;
achievements.company[i].details.super = ctrlExp.keyExp[i].supervisor;
achievements.company[i].details.whyleft = ctrlExp.keyExp[i].reasonforleaving;
ctrlExp.achKeys.company[i].achieves[i] = $scope.keyachievements;
ctrlExp.achKeys.company[i].details.super = ctrlExp.keyExp[i].supervisor;
ctrlExp.achKeys.company[i].details.whyLeft = ctrlExp.keyExp[i].reasonforleaving;
}
}
};
});
现在我正在做的很好,直到我在控制器中点击了。为简洁起见,我的对象看起来像这样:
ctrlExp.achKeys = {
company: [{
achieves: [],
details: {
super: "",
whyleft: ""
}
}]
};
我无法弄清楚,对于我的一生,是的,因为我已经超过50岁,为什么我不能为对象的第一部分分配任何内容:
这个:
ctrlExp.achKeys.company [0] .achieves [0] = $ scope.keyAchievements
$ scope.keyAchievements包含特定公司的所有项目符号。一个人的简历上可能有“ n”个公司。因此,我要遍历公司以获取公司的名称以及某人位于该公司“下方”的“关键成就”。
就是这样。
我将发布“服务”,但是此站点是我自己站点的一部分,尚未发布,我将其用作模板以供将来考虑。一旦知道了,我就会很高兴。
感谢大家为我们的工艺做出的贡献。
最佳答案
似乎正在尝试为尚未定义的变量设置值,即achievements.company[i]
因此,如果您添加以下内容:
achievements.company[i]={};
在您的151行之前,它可以工作。好吧,你不会得到
TypeError:无法读取未定义的属性“成就”
消息了。
在JavaScript中,您可以具有未定义的变量/对象,但是不能为其分配属性。
从上面的错误消息看,好像定义了
achievements
,而没有定义achievements.company[i]
,因此当您要为其分配achieves[i]
属性时就出现了问题。如果未定义
achievements
,您将收到以下消息:无法读取未定义的属性“ company”