Javascript Angular无法读取null的属性

Javascript Angular无法读取null的属性,javascript,angularjs,service,undefined,Javascript,Angularjs,Service,Undefined,在一个web应用程序中,我有两个包含一些元素的框。我还有一个附带过滤器(由一个选择组成)。在开始时,所有过滤器都被选中,并且可以正常工作。但是当我尝试一个组合时,在第一个列表中找不到任何东西,但在第二个列表中有一些数据,我得到了一个错误。这是我在控制器中调用服务的时间: if(data){ // If i have some response form serve var tmp = null; var lastName = null; angular.forEach(data.peo

在一个web应用程序中,我有两个包含一些元素的框。我还有一个附带过滤器(由一个选择组成)。在开始时,所有过滤器都被选中,并且可以正常工作。但是当我尝试一个组合时,在第一个列表中找不到任何东西,但在第二个列表中有一些数据,我得到了一个错误。这是我在控制器中调用服务的时间:

if(data){ // If i have some response form serve

 var tmp = null;
 var lastName = null;

 angular.forEach(data.people, function(ppl){
 if(ppl.lastName != lastName){
    if (lastName != null){
        $scope.people.push(tmp);
    }
    // Clean the tmp
    tmp = {
           name : null,
           count : 0,
           products : []
     };
     // Update lastName
     lastName = ppl.lastName;
  }
   // Add the actual row in the ob
   tmp.name = lastName;
   tmp.count += ppl.personCount;
   tmp.products.push(ppl);
  });

  // Process lasts elements (if there are some) in the array
  if(tmp.products.length > 0){
    $scope.people.push(tmp);
  }
错误是:
无法读取null的属性“products”


我试着写:
var tmp=[]
而不是null,但它表示
无法读取未定义的

的属性“产品”。我认为
角度。forEach
给了您一个范围问题。请尝试下面的代码

if(data && data.people.length > 0){ // If i have some response form serve

 var tmp = {};
 var lastName = null;

 for(var i = 0; i < data.people.length; i++){
     if(ppl.lastName != lastName){
         if (lastName != null){
             $scope.people.push(tmp);
         }
         // Clean the tmp
         tmp = {
            name : null,
            count : 0,
            products : []
         };
         // Update lastName
         lastName = ppl.lastName;
     }
     // Add the actual row in the ob
     tmp.name = lastName;
     tmp.count += ppl.personCount;
     tmp.products.push(ppl);
  };

  // Process lasts elements (if there are some) in the array
  if (tmp && tmp.products && tmp.products.length > 0)
      $scope.people.push(tmp);
  }
}
if(data&&data.people.length>0){//如果我有一些响应表单
var tmp={};
var lastName=null;
对于(var i=0;i0)
$scope.people.push(tmp);
}
}
使用
if(tmp&&tmp.products&&tmp.products.length>0)
进行最后一次验证