Javascript 使用AngularJS中的指令更改值输入AngularJS
当输入值不满足某个条件时,我需要更改该值。在这种情况下,当我添加详细信息并更改单价输入时,如果该值不是数字,则应将该值更改为“0.00” 问题在于,值不是数字,而是打印“不是数字”,而是打印“是数字”。只有当我更改“scope.item.price”的值时才会发生这种情况Javascript 使用AngularJS中的指令更改值输入AngularJS,javascript,angularjs,angularjs-directive,angularjs-scope,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,当输入值不满足某个条件时,我需要更改该值。在这种情况下,当我添加详细信息并更改单价输入时,如果该值不是数字,则应将该值更改为“0.00” 问题在于,值不是数字,而是打印“不是数字”,而是打印“是数字”。只有当我更改“scope.item.price”的值时才会发生这种情况 是否有任何方法可以在不调用两次scope的情况下更改输入值。$watch?我会在发票上执行深层$scope.watch。项目如下: $scope.$watch('invoice.items', function(){
是否有任何方法可以在不调用两次scope的情况下更改输入值。$watch?我会在
发票上执行深层$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,注意深度观察末尾的
true
。最好避免深度观察以获得性能。他想要格式化的ngModel已经注册了一块手表,所以我真的建议使用它。我认为这将是最好的选择。它是处理ng模型数据时的标准。
$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);