使用AngularJS中的指令更改值输入AngularJS

时间:2014-03-28 01:01:21

标签: javascript angularjs angularjs-directive angularjs-scope

当值不满足条件时,我需要更改输入的值。在此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?

1 个答案:

答案 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深度观察。