В веб-приложении у меня есть две ячейки, содержащие некоторые элементы. У меня также есть фильтр с фильтрами (составленный выбором). Вначале все фильтры выбраны, и он работает. Но когда я пытаюсь использовать комбинацию, которая ничего не находит в первом списке, но есть некоторые данные во втором списке, я получил ошибку. Это когда я вызываю Сервис в контроллере:
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);
}
Ошибка: Cannot read property 'products' of null
Я попытался написать: var tmp = [];
вместо null, но он говорит: " Cannot read property 'products' of undefined
Я думаю, что angular.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 (tmp && tmp.products && tmp.products.length > 0)
для последней проверки