无法在angularJs中获取我的对象的属性值

每当我获得对象属性的值时,我都会得到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时,我得到未定义的值。

--Edited--

哦,我现在知道我错了。

getReportInfo函数返回一个数组,我正在访问这些属性,而不会告诉它应该从哪个索引获取这些属性的值。

function run(id){
    var report = services.getReportInfo(id);

    var childReport = {
       id: newGuid(),
       parentId: report[0].id,
       reportPath: report[0].path 
    };

    ...
}

我放置了静态索引0,因为我知道数组总是长度为1。


您不会从.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一个很好的解释:
对服务vs工厂感到困惑


我可以看到两个与代码直接相关的问题:

1)你的工厂函数需要返回一个值或构造函数。 现在你的代码不会将工厂初始化为任何值。

2)你的getReportInfo函数也不会返回一个值,但是你将函数结果分配给一个变量。

请阅读更多信息:http://docs.angularjs.org/guide/dev_guide.services.creating_services

链接地址: http://www.djcxy.com/p/77831.html

上一篇: could not get the property value of my object in angularJs

下一篇: Angular service variables not updating