2015-04-30 4 views
1

, поэтому я пытаюсь отправить заполненную форму заказа с помощью mandrill из моего приложения доставки AngularJS ... все работает нормально, пока я не добавил вложенную матрицу внутри этой функции. поэтому в основном это то, что у меня есть. спасибо для смотретьAngularJS отправьте электронное письмо с Mandrill с результатом функции

вот фрагмент кода, который EmailController вызывая ошибку

{ 
"name": "TOTAL", 
"content": "$"+$scope.total(menu)+".00" 
} 

функция общего (меню) работает отлично в приложение, чтобы вычислить сумму всех элементов и выбранных опций.

здесь функция завод

OrderFactory.total = function(items){ 

    var itemTotal = 0; 

    angular.forEach(items, function(item) { 
     var optionTotal = 0; 
     var sizeTotal = 0; 
     if (item.active) { 
      itemTotal += item.qty * item.price; 
      angular.forEach(item.flavors, function(option) { 
       if (option.active) { 
        optionTotal += option.price; 
       } 
      }); 
      angular.forEach(item.sizes, function(option) { 
       if (option.active) { 
        sizeTotal += option.price; 
       } 
      }); 
      itemTotal += optionTotal + sizeTotal; 
     } 
    }); 

    return itemTotal; 

    }; 

что это происходит через это меню массив [], который имеет два вложенных массивов размером [] и ароматизаторы [] внутри.

Работы по EmailController и OrderFunctions работают за пределами этого сценария. Мне нужно выяснить, почему функция total (menu) не предоставляет значение EmailController.

здесь ошибка я получил в консоли

TypeError: Cannot read property 'active' of null 
at factory.js:55 
at Object.r [as forEach] (angular.js:330) 
at k.OrderFactory.total (factory.js:52) 
at k.$scope.sendMail (controller.js:174) 
at angular.js:12299 
at f (angular.js:22903) 
at k.$eval (angular.js:14353) 
at k.$apply (angular.js:14451) 
at HTMLButtonElement.<anonymous> (angular.js:22908) 
at HTMLButtonElement.c (angular.js:2998)angular.js:11562 
(anonymous function)angular.js:8525 
(anonymous function)angular.js:14453 
k.$applyangular.js:22908 
(anonymous function)angular.js:2998 
c 

любых идеи ?? спасибо

ответ

0

Вы код не обрабатывает условие исключения, вы должны проверить объект является недействительным или нет, то получить доступ только к внутреннему свойству

 angular.forEach(item.flavors, function(option) { 
      if (option && option.active) { 
       optionTotal += option.price; 
      } 
     }); 
     angular.forEach(item.sizes, function(option) { 
      if (option && option.active) { 
       sizeTotal += option.price; 
      } 
     }); 
+0

спасибо ... работал большой ... я проверю объект первым в будущем ... –

+0

хорошо я только что заметил, хотя она позволяет электронной почты для отправки она не придает гр omputed total .. он просто говорит $ 0.00. однако в приложении он вычисляется и отображается правильно. –

+0

вы могли бы добавить plunkr/скрипку с проблемой .. & не забудьте сделать upvote.if, это вам помогло. –

Смежные вопросы