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

标签 javascript 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 时,我得到了未定义的值。

--已编辑--

哦,我现在知道哪里错了。

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 有一个很好的解释:
Confused about Service vs Factory

关于javascript - 无法在angularJs中获取我的对象的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216208/

相关文章:

javascript - 如何处理并不总是返回 promise 的函数?

javascript - 一起使用隔离范围和嵌入式指令 Controller

c# - 无法将当前json数组反序列化为类型

javascript - 在这样的 javascript 代码中如何处理圈复杂度?

javascript - 如果存在多个元素,如何使用 jQuery 选择器指向正确的元素?

javascript - 如何将 PHP 变量传递给 AngularJS 配置

javascript - 如何将大量文本(文本中带有单引号)传递给 Angular Modal

javascript - 不要在 for 循环的最后一个元素后写逗号

Javascript 和 HTML 按钮不起作用?

javascript - 从 Javascript 更改 CSS 内容