AngularJS отправляет письмо с Mandrill с результатом функции
Поэтому я пытаюсь отправить заполненную форму заказа по электронной почте с mandrill из моего приложения доставки AngularJS... все работало нормально, пока я не добавил вложенный массив в функцию. так что в основном вот что у меня есть. спасибо за поиск
вот фрагмент кода 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;
};
то, через что он проходит, это меню массива [], которое имеет два вложенных массива размеров [] и flavors[] внутри.
и EmailController, и фабрика OrderFunctions работают вне этого сценария. Что мне нужно выяснить, так это то, почему функция total(меню) не предоставляет значение 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
Любые идеи? спасибо
1 ответ
Ваш код не обрабатывает условие исключения, вы должны проверить, является ли объект нулевым или нет, а затем получить доступ только к внутреннему свойству
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;
}
});