2015-12-23 35 views
5

Ng-model-options = "{getterSetter: true}" ile birlikte bir yazım tipi girdisi kullanılırken kromda (47) bir sorunum var alana ondalık sayı girmenize izin vermez.Açısal 1,4.x sayısal alan ondalık sayılar için çalışmıyor

getterSetter ile

: getterSetter olmadan

<input ng-model="amount" ng-model-options="{ getterSetter: true }" step="0.01" type="number" > 

(çalışmıyor): Bir demo için (çalışıyor)

<input ng-model="_amount" step="0.01" type="number"> 

bkz plunker http://plnkr.co/edit/qu8UXCUtkJaFwjgGE1NX?p=preview

+1

çalışır. (Chrome 46) –

cevap

1

Ne oluyor varken sana bunu Bir getterSetter işlevini bildirirseniz, girişin değerini değiştirdiğinizde bu işlev çağrılır.

"12." yazdığınızda işlev çağrılıyor, ancak bu geçerli bir sayı değil, bu yüzden "." geçerli bir değer sağlamak için.

"123" yazıp ardından "." Yazmayı deneyin. Çalıştığı "12.3" gibi sayılar arasında!

Düzenleme Ben kodunuzu sabit

, şimdi çalışıyor.

bu deneyin:

İşte
$scope.amount = function(newValue) { 
    return arguments.length ? ($scope._amount = newValue) : $scope._amount; 
}; 

bir çatallı plunkr geçerli: Benim için http://plnkr.co/edit/xZtZLH5He4ZnjkqhFApY?p=preview

+0

Konsolda da görebileceğiniz gibi bu gerçekleşmiyor. bastığınızda. alıcı ateşlenir ama asla ayarlayıcıyı ateşlemez. Ayrıca verilen cevap geçerli bir geçici çözüm değildir. – user3589296

+0

Ben bununla ilgili bir geçici çözüm sunmuyordum, sadece nasıl çalıştığını gösteriyordum, bunun nedenini anlamanız için sadece bir örnek. Ve daha önce de söylediğim gibi, konsolda undefined kaydediliyor çünkü "12." hiçbir şey ifade etmiyor –

+1

Düzenlenen cevaba bir bakın. Umarım yardımcı olur! –