AngularJS使用Mandrill发送带有函数结果的电子邮件

AngularJS使用Mandrill发送带有函数结果的电子邮件,angularjs,mandrill,Angularjs,Mandrill,所以我正试图从我的AngularJS快递应用程序发送一封完整的带有mandrill的订单电子邮件。。。在我在函数中添加嵌套数组之前,一切都很正常。基本上这就是我所拥有的。谢谢你的关注 以下是触发错误的EmailController代码段 { "name": "TOTAL", "content": "$"+$scope.total(menu)+".00" } 函数totalmenu在应用程序中可以完美地计算所有项目和选定选项的总数 这里是工厂函数 OrderFactory.total = fu

所以我正试图从我的AngularJS快递应用程序发送一封完整的带有mandrill的订单电子邮件。。。在我在函数中添加嵌套数组之前,一切都很正常。基本上这就是我所拥有的。谢谢你的关注

以下是触发错误的EmailController代码段

{
"name": "TOTAL",
"content": "$"+$scope.total(menu)+".00"
}
函数totalmenu在应用程序中可以完美地计算所有项目和选定选项的总数

这里是工厂函数

 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工厂都在此场景之外工作。我需要弄清楚的是为什么totalmenu函数没有向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;
            }
        });

我刚刚注意到,虽然它允许发送电子邮件,但没有附上计算总数。。上面写着0.00美元。但是在应用程序中,它是正确计算和显示的。你能添加plunkr/处理问题吗?&别忘了做upvote。如果它对你有帮助的话。我从未使用过那些网站,但我真的需要弄清楚这一点,所以让我看看我是否能得到一个设置…好的,这是一个plunkr。。。我留下了mandrill的钥匙,因为我会在一切都设置好后更改它们。。。所以totalmenu和totalItems不会将结果传递给EmailController。。。但是我很高兴我这么做了,因为有几件事我需要帮助,这会让事情变得更容易。。谢谢你的关注