@Tiran_94
Python Django

Как обойти проблему с фильтрами при загрузке json файла в AngularJS?

Я с помощью AngularJS выгружаю json на html страницу через фильтры, ранее в js файле был прописан текст json, но при подключении файла начинает матерится angular.min.js:118 TypeError: Cannot read property 'length' of undefined . Проблема вылетает только если я использую фильтры которые я прописал на несколько переменных:
iApp.filter('filterprice', function () {
        return function (allobj, price1, price2) {
        var filteredMaterials = [];
        if (price1 === undefined){
            price1 = 0;
        }if (price2 === undefined){
            price2 = 999999;
        }

        if (price1 === ''){
            price1 = 0;
        }if (price2 === ''){
            price2 = 999999;
        }

        for (var i = 0; i < allobj.length; i++) {
            if (allobj[i]){

            }
            if (allobj[i]['price'] >= price1 && allobj[i]['price'] <= price2) {
                filteredMaterials.push(allobj[i]);
            }
        }
        return filteredMaterials;
        };
});

Используя 1 такой фильтр он просто выкидывает ошибку и отображает все, используя 2 уже ничего не отображает.

В чем может быть проблема и как ее исправить?
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 1
Так в консоли же показали на ошибку. Cannot read property 'length' of undefined. Length у вас берется только у allobj, значит в какой то момент он undefined. Мб вы грузите json асинхронно, поэтому фильтр запускается на undefined объекте. Быстрый костыль:
return function (allobj, price1, price2) {
  if(allobj == null) return;
  var filteredMaterials = [];

Либо поставить в html на эл-т:
ng-if="allobj"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы