could not get the property value of my object in angularJs

I get undefined whenever I get the value of a property of an object.

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
   };
}

Whenever I put breakpoint on my var report = services.getReportInfo(id) it could contains the correct values for each property of the my report object. However, when I get the report.id or report.path, I get undefined value.

--Edited--

Oh, I know now where I got wrong.

The getReportInfo function returns an array and I'm accessing the properties without telling from what index should it get the values for the said properties.

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

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

    ...
}

I placed static index 0, since I know that the array will always have a length of 1.


You are not returning anything from the .factory method and the getReportInfo is also not returning anything. For what you are trying to do, try to use .service method:

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;
   }
}

Here is a good explanation on how to use .factory and .service :
Confused about Service vs Factory


Two immediate issues with the code I can see:

1) Your factory function needs to return a value or constructor function. Right now your code is not initializing the factory to any value.

2) Your getReportInfo function also doesn't return a value, yet you are assigning the function result to a variable.

Read more here: http://docs.angularjs.org/guide/dev_guide.services.creating_services

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

上一篇: 我如何编写一个在AngularJS中返回true / false的服务?

下一篇: 无法在angularJs中获取我的对象的属性值