当值不满足条件时,我需要更改输入的值。在此example中,当我添加详细信息并更改单位价格输入时,如果值不是,则数字应将值更改为" 0.00"。
scope.$watch(attrs.ngModel, function(newValue, oldValue) {
if ( isNaN(newValue) ) {
scope.item.price = "0.00";
console.log("isn't numeric");
} else {
console.log("is numeric");
}
});
问题是该值不是打印数字"不是数字"而是打印"是数字"。只有当我更改" scope.item.price"。
的值时才会发生这种情况有没有办法可以在不调用两次范围的情况下更改输入值。$ watch?
答案 0 :(得分:0)
我会在invoice.items
上做一个深度$ scope.watch:
$scope.$watch('invoice.items', function(){
$scope.subtotal=0;
angular.forEach($scope.invoice.items,
function(item) {
$scope.subtotal += item.qty * item.price;
});
$scope.igv= $scope.subtotal * 0.18;
$scope.total=$scope.subtotal + $scope.igv;
}, true);
请参阅plunkr http://plnkr.co/edit/5rzjeIG0C76a8l0ZAp4u?p=preview,注意最后的true
深度观察。