AngularJS - 当另一个范围值满足大于条件时更新范围

时间:2016-09-14 10:41:49

标签: angularjs

我有一个应用程序,我在其中获得购物车小计,然后添加运费以获得总额。首先,我通过选择ng选项选择项目数量,该选项输出项目的最终价格subTotal

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

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

然后通过ng-options

选择运费shippingCosts
<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
}

2 个答案:

答案 0 :(得分:1)

对价格select使用ng-change。 视图:

<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字段。

答案 1 :(得分:0)

尝试这个代码:

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