Arrays AngularJS工厂函数,用于查找数组中项的总和

Arrays AngularJS工厂函数,用于查找数组中项的总和,arrays,angularjs,parse-platform,Arrays,Angularjs,Parse Platform,因此,希望这将是最后一步,最终把我的交付应用程序。好的,在这里的会员们的帮助下,我遇到了这样一种情况:一系列的产品项目附带了一系列的口味。在item数组中的flavors数组中有一个price字段。我的OrderFunctions工厂中有一个total函数,它返回所有活动项的总和。我需要完成的是让这个函数考虑所选的风味选项价格字段。更新返回的总数。。这是我的。。谢谢你的关注 首先是我的工厂 app.factory('OrderFunctions', function() { var Or

因此,希望这将是最后一步,最终把我的交付应用程序。好的,在这里的会员们的帮助下,我遇到了这样一种情况:一系列的产品项目附带了一系列的口味。在item数组中的flavors数组中有一个price字段。我的OrderFunctions工厂中有一个total函数,它返回所有活动项的总和。我需要完成的是让这个函数考虑所选的风味选项价格字段。更新返回的总数。。这是我的。。谢谢你的关注

首先是我的工厂

app.factory('OrderFunctions', function() {
    var OrderFactory = {};

    OrderFactory.total = function(item){

        var total = 0;

        angular.forEach(item, function(item){
            if (item.active){
            total+= item.qty * item.price;
            }
        });

    return total;
    };
    return OrderFactory;

});
这是我的控制器这些功能都将在工厂,但现在

app.controller('OptionsController', function($scope, OrderFunctions) {

$scope.remove = OrderFunctions.toggleActive;
$scope.add = OrderFunctions.add;
$scope.minus = OrderFunctions.minus;

$scope.addOption = function(item, opt) {
    var index = item.flavors.indexOf(opt);
    if(index > -1) {
        item.flavors.splice(index, 1);
    }
    else
        item.flavors.push(opt);
}

$scope.checkOption = function(item, opt) {
    return item.flavors.indexOf(option) > -1
}   

});
选项页的html标记

<md-card ng-repeat="item in items.results | filter:true">
     <img ng-src="{{item.img}}" 
          class="md-card-image" 
          alt="">
          <md-card-content class="content">
              <h2 class="md-title">{{ item.name }}</h2>
              <h4>{{ item.price | currency }}</h4>
              <md-list>
                  <p class="md-subhead">Choose Your Flavor</p>
                  <md-divider></md-divider>
                  <md-list-item ng-repeat="option in options.results" 
                                layout="row">
                      <p> {{ option.name }} </p>
                      <span flex></span>
                      <p> {{ option.price | currency}} </p>
                      <md-checkbox aria-label="option"
                                   class="md-accent" 
                                   ng-checked="checkOption(item, option)"
                                   ng-click="addOption(item, option)">
                      </md-checkbox>
                  </md-list-item>
              </md-list>
           </md-card-content>
           <md-action-bar layout="row" 
                          layout-align="end center">
                          <md-button class="md-fab md-accent fab" 
                                     aria-label="Remove From Cart" 
                                     ng-click="remove(item)"                               
                                     ng-class="{active:item.active}">
                                     <md-icon md-svg-src="img/icons/remove.svg"></md-icon>
                          </md-button>
            </md-action-bar>
  </md-card>

{{item.name}
{{item.price | currency}}
选择你的口味

{{option.name}

{{option.price | currency}}

订单页面的html标记

<md-card>
<md-card-content>
    <md-list>
        <span class="md-subhead">Review Order</span>
        <md-divider></md-divider>
    <md-list-item ng-repeat="item in items.results | filter:true" 
                  layout="row">
                  <span>{{ item.name }}</span>
                  <span flex></span>
                  <span>{{ item.price | currency}}</span>
                  <div ng-repeat="flavor in item.flavors">[{{flavor.name}} : {{flavor.price | currency}}] </div>         
    </md-list-item>
                  <md-divider></md-divider>
                  <md-list-item layout="row">
                      <span>Order Total :</span>
                      <span flex></span>
                      <span>{{ total(items.results) | currency}}</span>
                  </md-list-item>
              </md-list>   
</md-card-content>
</md-card>

审查令
{{item.name}
{{item.price | currency}}
[{flavor.name}:{{flavor.price | currency}]
订单总数:
{{总数(项目.结果){货币}
所有这些数据都存储在Parse数据库中,其中包含以下字段:名称、价格、描述、img、数量、活动、样式[]

选项有名称、价格、活动字段

感谢您的关注,感谢这个伟大的社区,没有它,我永远不会走到这一步

编辑


我刚刚意识到该复选框在视图中不会保持活动状态,因此如果您有任何其他建议

已解决

我采用了一种不同的方法,使用了我已有的方法

html复选框已添加。单击add()函数可激活该选项

<md-checkbox aria-label="option.active"
             class="md-accent" 
             ng-click="add(option)">
</md-checkbox>
还将我工厂中的total函数更新为

OrderFactory.total = function(item, option){

    var total = 0;
    var itemTotal = 0;
    var optionTotal = 0;

    angular.forEach(item, function(item){
        if (item.active){
            itemTotal+= item.qty * item.price;
        }
    });
    angular.forEach(option, function(option){
        if (option.active){
            optionTotal+= option.price;
        }
    });
    total = itemTotal + optionTotal;
    return total;
};
OrderFactory.add = function(item){
    item.active = !item.active;
};
OrderFactory.total = function(item, option){

    var total = 0;
    var itemTotal = 0;
    var optionTotal = 0;

    angular.forEach(item, function(item){
        if (item.active){
            itemTotal+= item.qty * item.price;
        }
    });
    angular.forEach(option, function(option){
        if (option.active){
            optionTotal+= option.price;
        }
    });
    total = itemTotal + optionTotal;
    return total;
};