Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AngularJS中的指令更改值输入AngularJS_Javascript_Angularjs_Angularjs Directive_Angularjs Scope - Fatal编程技术网

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

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(){

当输入值不满足某个条件时,我需要更改该值。在这种情况下,当我添加详细信息并更改单价输入时,如果该值不是数字,则应将该值更改为“0.00”

问题在于,值不是数字,而是打印“不是数字”,而是打印“是数字”。只有当我更改“scope.item.price”的值时才会发生这种情况


是否有任何方法可以在不调用两次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);