增加价格

时间:2016-07-01 10:06:33

标签: angularjs ng-repeat

我想制作一个简单的应用程序"。当用户增加/减少ng-model="kilograms"

我想将当前价格乘以"千克"并改变表格中的价值。

我不知道如何在JS文件中获取 product.price

CodePen

3 个答案:

答案 0 :(得分:2)

有几个地方可以使用修补程序

1.您可以使用ng-change跟踪输入中的更改,而不是使用ng-click

<input type="number" ng-change="updateValue()" ng-model="kilograms"/>

2.更新函数不应该取值,因为您要更新整个表而不是特定条目。这意味着您还需要使用循环来更新所有条目。

$scope.updateValue = function () {
   angular.forEach($scope.products, function(item){
     item.totalPrice = item.price * $scope.kilograms;
   });
 }

3.您无法更新price,因此无法跟踪单位价格,您需要将其保留在其他属性中,即totalPrice

4.您需要在初始化期间调用一次更新功能,这样您就不会在加载时看到空表。

http://codepen.io/anon/pen/xOdWOB

答案 1 :(得分:2)

var app = angular.module("application", []);

  app.controller("filterCTRL", function($scope) {

     $scope.products = [
        {name:"Milk", price:100},
        {name:"Orange", price:120},  
        {name:"Farina", price:50}
     ];

     $scope.kilograms = 2;

     $scope.$watch('kilograms', function(newVal, oldVal) {
       if( newVal != oldVal) {
         $scope.products.forEach(function(product) {
            product.price *= newVal;
         });
       }
     });

     $scope.updateValue = function (product) {
       return product.price = product.price * $scope.kilograms;
     }
}); 

lcyool的答案也有效:)

每当元素的值发生变化时,创建$ watch和ng-change都将触发一个函数。您可以使用它来检测更改,并将千克和价格的值加倍并更新它。

答案 2 :(得分:1)

您可以将价格与HTML本身中的kilograms相乘,并在更改kilograms时更改 product.price

<td>{{product.price * kilograms | currency:$:0}}</td>