2016-09-14 91 views
0

我有一个应用程序,其中获取购物车小计,然后添加运输成本以获得总计。首先,我通过选择NG选项输出的最终价格的项目AngularJS - 当另一个范围值满足大于条件时更新范围

<select ng-options="item.totalprice as item.quantity for item in inventory" ng-model="subTotal"></select> 

    <p>Subtotal: {{subTotal}}$</p><br><br> 

然后运费shippingCostssubTotal通过NG选项

<select ng-options="country.shipping as country.name for country in countries" ng-model="shippingCosts"></select> {{shippingCosts}}$<br><br> 

为所选的选择项目的数量两路输出的总总和:

<p>Total: {{subTotal + shippingCosts}}</p> 

我想实现的是设置shippingCosts等于零时subTotal > 500。在这里你可以看到一个工作plunkr在此先感谢!

*我试图使一个变量shippingFinal,将更新时subTotal > 500,但它似乎没有工作

if ($scope.subTotal >= 500) { 
    $scope.shippingFinal = 0 
} else{ 
    $scope.shippingFinal = $scope.shippingCosts 
} 

回答

1

使用NG-变化select。 查看:

<select ng-options="item.totalprice as item.quantity for item in inventory" ng-model="finalPrice" ng-change="adjustShippingCost()"></select> 

在控制器,这可能是这样的:

$scope.adjustShippingCost = function() { 
    $scope.shippingCosts = $scope.finalPrice >= 500 ? 0 : $scope.shippingCosts; 
}; 

注意,这将改变在一个shippingCosts方向,即你仍然可以从列表中选择它们。此处的解决方案是添加ng-change以进行装运,或者禁用,隐藏等发货select字段。

0

试试这个CODE:价格

if ($scope.subTotal >= 500) { 
     $scope.$apply(function() { 
      $scope.shippingFinal = 0 
     }); 
} else{ 
    $scope.shippingFinal = $scope.shippingCosts 
} 
+0

感谢您的洞察力,但我没有得到它的工作。查看更新后的plunkr http://plnkr.co/edit/nYwlaeJX0PI6vI6vRZ2y?p=preview – Joe82