2017-01-11 5 views
6

anglejs(1.6.1)でそのタイプを入力すると、9.03から9.05までの値にはundefinedが含まれます。この問題は他の値、例えば9.62,9.63,17.31の中で再現されます。0.01ステップで数値を入力すると、anglejsの特定の値が未定義になります

<input type="number" step="0.01" data-ng-model="$ctrl.numericValue" /> 

このfiddleは問題を再現します。数値入力をクリックするだけです。

Linuxのミントの下で、Firefoxとクロムでテスト

それは"step"属性にリンクされているようです。 "0.001"に設定しても問題ありません。しかし、私はこのアプリケーションでお金を脅かすので、小数点以下2桁が必要です。

注:値は、最初にdata-numeric-value経由9.03に設定されている場合、それはないundefinedです。

このバグの回避策はありますか?バグレポートを充填しながら、私はバグは、「スナップショットで修正されていることを見つけるために、plunkrを作ったエディット2

step="0.001"対行動の聖霊降臨祭step="0.01"を表示するfiddleを更新

編集

"バージョン、魔女は1.6.2です。しかし、このバージョンは、今度はangularjsサイトからダウンロードできません。

+1

https://github.com/angular/angular.js/issues/15257 – epascarello

+0

@eoascarello:このバグはステップ= 0.1であり、閉じています。鉱山は "新しい"ものだと思われます... – Johnny5

+0

バグを報告してください、同じ種類の問題があることを示していました。入力の値を手動でチェックすると、その値がそこにあるので、値をどのようにマッピングしているのかがわかります。 – epascarello

答えて

3

Angularではバグのようです。 Angular 1.6.0を使用すると、同じ問題が発生します。 Angular 1.5.9を使用するとうまくいくようです。これらの2つのバージョン間の何かがこの問題を引き起こしましたが、まだ1.6.1では発見されていません。

したがって、最良の方法は、Angularチームのバグを上げることです。

可能であれば、自分のプロジェクトの短期的な解決策は、角度1.5.9にロールバックすることです。

私はこれらの結果を得るために、FirefoxとChromeの両方でWindows 7でテストしました。

+1

バグレポートに記入している間にplunkrを作成し、バグが "スナップショット"バージョンで修正されていることを確認しました。魔法使いは1.6.2です。しかし、このバージョンはangularjsサイトからはダウンロードできません。 – Johnny5

0

JavaScriptの浮動小数点精度のため、奇妙なグリッチです。私はあなたの入力を別のステップ(好ましくは1のステップを意味する整数で)に再設定し、取り出した値を100で割った値を使用することをお勧めします。

-1

これは素晴らしい解決策ではありませんが、jqueryを使用できます。あなたは、角度の前にjqueryのを含める必要が :

<script 
    src="https://code.jquery.com/jquery-3.1.1.js" 
    integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" 
    crossorigin="anonymous"></script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> 

は私が期待した値

ctrl.showValue1 = function(){ 
    return "value 1 is " + $('#numericValue1').val() + " and its type is " + typeof ctrl.numericValue1; 
    }; 

を取得するには、IDを使用し、その後、入力フィールド

<input id="numericValue1" type="number" step="0.01" ng-model="$ctrl.numericValue1" /> 

にIDを割り当て、これはうまく動作します!

関連する問題