. Burada bağlama ve gözlemciler kullanarak bunu başarabiliriz.
Öncelikle her zaman bir sayı döndürür bir işlev oluşturmanızı sağlar.
var onlyNumber = function(input) {
return input.toString().replace(/[^\d.]/g, "");
};
aşağıdaki
App = Ember.Application.create();
App.person = Ember.Object.create({
age: 42
});
App.NumberField = Ember.TextField.extend({
valueBinding: Ember.Binding.from("App.person.age").transform(onlyNumber),
_cleanValue: function() {
this.set('value', onlyNumber(this.get('value')));
}.observes('value')
});
1) Bir Kişinin yaşına Bağlama yaratıyor yapabileceği kullanarak, ancak bu bağlanma geçer şey sadece bir sayı olabilir. Daha fazla ayrıntı için dönüşümler için Ember.Binding adresine bakın.
2) Metin alanının değerini gözlemleyerek ve değiştirdiğinde sadece bir numara olmasını ayarlıyorsunuz. Kullanıcı '42a' girerse hemen '42' olarak ayarlayacağız. Kısa bir saniye için '42a' metin girişinde olsa bile, dönüşümümüz nedeniyle ciltlemeyi geçemeyeceğini unutmayın. (Istenirse, yalnızca sayısal girişlerini işleyiş ve dize yerine sayısının bağlayıcı sağlar) http://jsfiddle.net/nDBgC/
Eski tarayıcılara önem vermiyorsanız, aşağıdaki gibi html5 giriş türlerinden de faydalanabilirsiniz: {{view Ember.TextField type = "number" valueBinding = "someBinding"}} – Rajat
@Rajat Peki eski tarayıcılarda ne olurdu? Bozuk işlevsellik mi, yoksa doğrulama yok mu? Ve 'eski' olarak düşünülen nedir? (Üzgünüz, bu alanda bir noob var) –
Onlar sadece normal bir metin alanına geri dönüş yapacaklar. Tarayıcı desteği kontrol quirksmode: http://www.quirksmode.org/html5/inputs.html – Rajat