0

入力された金額に自動的に小数点を追加する簡単な金額入力を作成中です。ただし、 $watch 関数が永遠にループしてからエラーになるという問題が発生しています。これは私が持っているものです:

$scope.$watch('enteredBillAmount.number', function(newValue, oldValue) {
    if(!angular.equals(newValue, oldValue)) {
        $scope.enteredBillAmount.number = Number(newValue) / 100;
    }
});

任意の提案をいただければ幸いです。

4

2 に答える 2

2

ウォッチ機能は、ウォッチしているアイテムを変更するため、もちろんループします。関数が実行されるたびに、時計がトリガーされます。

数値に別の変数を使用するか、次の 2 つのいずれかを行うことができます。

$scope.$watch('enteredBillAmount.number', function(newValue, oldValue) {
    if(!angular.equals(newValue, oldValue)) {
        $scope.enteredBillAmountNumber = Number(newValue) / 100;
    }
});

ただし、これは単なる書式設定関数であることを考慮すると、カスタム フィルターを作成することもできます。

angular.filter('bill', function() {
  return function(input) {
    return input ?  Number(input) / 100 : '';
  };
});
于 2015-05-19T03:19:23.623 に答える