我想制作一个简单的应用程序"。当用户增加/减少ng-model="kilograms"
我想将当前价格乘以"千克"并改变表格中的价值。
我不知道如何在JS文件中获取 product.price 。
答案 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.您需要在初始化期间调用一次更新功能,这样您就不会在加载时看到空表。
答案 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>