AngularJS 使用函数结果用 Mandrill 发送电子邮件
AngularJS send email with Mandrill with result from function
所以我正在尝试从我的 AngularJS 交付应用程序发送带有 mandrill 的完整订单电子邮件...一切正常,直到我在函数中添加了一个嵌套数组。所以基本上这就是我所拥有的。感谢观看
这是触发错误的 EmailController 代码片段
{
"name": "TOTAL",
"content": "$"+$scope.total(menu)+".00"
}
total(menu) 函数在应用程序中完美运行,可以计算所有项目和所选选项的总数。
这里是工厂函数
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;
};
它正在经历的是一个数组 menu[],其中有两个嵌套数组 size[] 和 flavors[]。
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
有什么想法吗?谢谢
你的代码没有处理异常情况,你应该检查对象是否为空然后只访问内部 属性
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;
}
});
所以我正在尝试从我的 AngularJS 交付应用程序发送带有 mandrill 的完整订单电子邮件...一切正常,直到我在函数中添加了一个嵌套数组。所以基本上这就是我所拥有的。感谢观看
这是触发错误的 EmailController 代码片段
{
"name": "TOTAL",
"content": "$"+$scope.total(menu)+".00"
}
total(menu) 函数在应用程序中完美运行,可以计算所有项目和所选选项的总数。
这里是工厂函数
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;
};
它正在经历的是一个数组 menu[],其中有两个嵌套数组 size[] 和 flavors[]。
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
有什么想法吗?谢谢
你的代码没有处理异常情况,你应该检查对象是否为空然后只访问内部 属性
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;
}
});