我试图根据输入获得折扣值,我希望它是动态的,所以我尝试这样做。
ng-change="detail.total = detail.total - ((detail.discount/100)*detail.total)"
但它不起作用,因为它会引用新更改的
detail.total
,它实际上应该引用旧的、不变的值。
下面是代码段:
<ui-select ng-model="detail.item" theme="bootstrap" ng-change="detail.price = detail.item.price">
<ui-select-match placeholder="Select item" allow-clear>{$$select.selected.name$}</ui-select-match>
<ui-select-choices repeat="item in main.items | propsFilter: {name: $select.search, price: $select.search} | limitTo: 100">
<div ng-bind-html="item.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
<input type="text" ng-model="detail.qty" ng-change="detail.total = (detail.qty * detail.price)">
<input type="text" ng-model="detail.price" ng-change="detail.total = (detail.qty * detail.price)">
<input type="text" ng-model="detail.discount" ng-change="detail.total = detail.total - ((detail.discount/100)*detail.total)>
<input readonly type="text" ng-model="detail.total">
我在这里做错什么了?
编辑:尝试在我的控制器内执行此操作-
this.new_total = function(total, discount){
var total_c = angular.copy(total);
var discount_c = angular.copy(discount);
discount_c = discount_c/100;
var final = total_c - (discount_c*total_c);
return final;
}
然后我这样称呼它:
<td><input type="text" class="form-control" ng-model="detail.discount" ng-change="detail.total = main.new_total(detail.total, detail.discount);"></td>
它仍然有同样的问题