TypeError: невозможно прочитать свойство "уменьшить" неопределенного в angularjs

Deathstorm спросил: 26 декабря 2017 в 07:49 в: javascript

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

Итак, для создания пользовательских фильтров поиска я использую javascript '.map и .reduce, в этом случае я использую их в моих примерах областей. Взгляните на следующий код:

$http.get('config/get/getOrders.php', {cache: true}).then(function(response){
        $scope.orders = response.data.orders.order;
        $scope.orders.map( function addPlace(item) {
            item.firstname = $scope.customers.reduce(function(a,customers){
                return item.id_customer === customers.id ? customers.firstname : a;
            }, '');
            return item;
        });
    });

Итак, в $http.get() я запрашиваю файл JSON с данными. Эти данные состоят из нескольких заказов с информацией. Все эти заказы имеют значение id_customer. Это значение подключается к информации о клиенте, которая разместила заказ.

Итак, я хотел расширить функцию поиска с помощью этого customer name. Для получения дополнительной информации о том, как и почему взглянуть на это , о котором я вчера спросил.

И это сработало. Фильтр также может искать customer_firstname. Но тогда я хотел использовать один и тот же тип функции в другом контроллере. Цель функции остается прежней. Подключение данных из нескольких типов $scope. Но странно, поскольку это возврат TypeError: Cannot read property 'reduce' of undefined. Да, я разместил это в том же app.js, но просто в другом контроллере. Я проверял, существуют ли все данные $scope.products и $scope.stock_availables и $scope.productCombiantions, я проверил поставщиков и т. д., и все я так не знаю, почему это происходит. Функция в этом случае:

$http.get('config/get/getProducts.php', {cache: true}).then(function(response){
    $scope.products = response.data.products.product;
    $scope.products.map( function addPlace(item) {
        item.eanCombination = $scope.productCombinations.reduce(function(a, productCombinations, stock_availables){
            return item.id === stock_availables.id + stock_availables.id === stock_availables.id_product_attribute + stock_availables.id_product_attribute === productCombinations.id ? productCombinations.ean13: a;
        }, '');
        return item;
    });
});

Краткое описание: Функция работает на одном контроллере, но одна и та же функция не работает на другом контроллере.

Если у вас есть вопросы, задайте их в комментариях.

Как всегда, спасибо заранее!

0 ответов