每当我获得对象属性的值时,我都会得到undefined
。
function run(id){
var report = services.getReportInfo(id);
var childReport = {
id: newGuid(),
parentId: report.id, // i get undefined
reportPath: report.path // i get undefined
};
...
}
services.js
angular.module('project.services').factory('services', function(){
var reports = [
{
....
},
{
....
}
];
function getReportInfo(id){
var report = reports.filter(function(element){
return element.id === id;
});
};
return{
getReportInfo: getReportInfo
};
}
每当我在我的var report = services.getReportInfo(id)
上放置断点时,它可能包含我的报告对象的每个属性的正确值。但是,当我得到report.id或report.path时,我得到了未定义的值。
- 编辑 -
哦,我现在知道我错了。
getReportInfo函数返回一个数组,我正在访问这些属性,而不知道它应该从哪个索引获取所述属性的值。
function run(id){
var report = services.getReportInfo(id);
var childReport = {
id: newGuid(),
parentId: report[0].id,
reportPath: report[0].path
};
...
}
我放置静态索引0,因为我知道数组的长度始终为1。
答案 0 :(得分:2)
您没有从.factory
方法返回任何内容,getReportInfo也没有返回任何内容。对于您要执行的操作,请尝试使用.service
方法:
angular.module('project.services').service('services', function(){
var reports = [
{
....
},
{
....
}
];
this.getReportInfo = function (id){
var report = reports.filter(function(element){
return element.id === id;
});
return report;
}
}
以下是有关如何使用.factory
和.service
的详细说明:
Confused about Service vs Factory
答案 1 :(得分:0)
我可以看到代码的两个直接问题:
1)您的工厂函数需要返回值或构造函数。现在你的代码没有将工厂初始化为任何值。
2)你的getReportInfo函数也没有返回值,但是你将函数结果赋给变量。
在此处阅读更多内容:http://docs.angularjs.org/guide/dev_guide.services.creating_services