2012-05-04 16 views
5

ExtJS 3.3 kullanıyorum ancak bu diğer sürümlerle de alakalı olabilir.Etiketleri ExtJS Slider denetiminin her iki ucuna nasıl ekleyebilirim?

ExtJS tabanlı bir UI'de bir Slider denetimi kullanıyorum. Burada "Slider İpucu" Örneğin uyarınca, sürüklerken değeri göstermek için ayarlanmış bir araç ipucu vardır: http://dev.sencha.com/deploy/ext-3.3.1/examples/slider/slider.html

O ne bir belirti olmaksızın bir kaydırıcı var oldukça zayıf UX'i olmak bana öyle geliyor değerler (veya bu durumda kaymaya başlayana kadar değil). Kaydırıcının temsil ettiği aralığı göstermek için iki ucuna da etiket eklemek istiyorum. Böyle bir şey:
Example of possible Slider labels

Yani, tabii ki, merak ediyorum: bu standart kontrol kendisi ile mümkün mü? (Dokümanlara baktım ama hiçbir şey atlamamıştı)? veya bunun için düzgün bir yol var mı? İşte

+0

Bunun kutudan çıktığını sanmıyorum, ancak bunu çok fazla sorun olmadan bir sürgü uzantısı olarak oluşturabilirsiniz. – AMember

cevap

3

bunu yapmak için yaklaşık gitti geçerli:

var tip = new Ext.slider.Tip({ 
     getThumbText: this.getThumbText, 
     getText: function (thumb) { 
      return '<b>' + this.getThumbText(thumb.value) + '<b>'; 
     } 
    }); 

this.timeSliderLabel = new Ext.form.Label({ 
     text: Nipendo.Localization.HistorySlider + ': ', 
     style: 'margin:3px 5px 0px 5px;' 
    }); 

this.timeSlider = new Ext.Slider({ 
     width: 214, 
     value: 1, 
     increment: 1, 
     minValue: 1, 
     maxValue: 13, 
     plugins: tip 
    }); 

    this.timeSlider.on('change', function (slider, newValue, thumb) { 
     this.timeSliderHintLabel.setText(this.getThumbText(thumb.value), false); 
     this.onSearchClick(); 
    }, this); 

    this.timeSliderHintLabel = new Ext.form.Label({ 
     html: String.format('(1 {0})', Nipendo.Localization.OneMonthBack), 
     style: 'margin:3px 5px 0px 5px;' 
    }); 

GÜNCELLEME:

düzen böyle kullanılabilir: getThumbText kullandığım bir yardımcı yöntemdir

config = config.apply({ 
    layout: 'column', 
    defaults: { 
     layout: 'form' 
    }, 
    items: [ 
     this.timeSliderLabel, 
      this.timeSlider, 
      this.timeSliderHintLabel 
    ] 
}, config) 

Doğru etiket değerini almak için

+0

Cevabınız için teşekkürler, yavaş yanıtım için özür dilerim (başka bir projede bulundum). Ne yazık ki, çözümün bana ne sonra olduğumu vermiyor. Kullanıcının olası değer aralığının ne olduğunu belirten kaydırıcının her iki ucunda bir tane olmak üzere 2 statik parçaya sahip olmak istiyorum. Bu, alan etiketinden ve herhangi bir aşamada açılan araç ipucundan bağımsız olmalıdır. Görünüşe göre, kodunuz kayma değeri değiştikçe alanın etiketini değiştiriyor. – David

+0

doğrudur ancak değişiklik olayını kaldırarak ve test setini engelleyerek statik olabileceği gibi ... – AMember

+0

Kodunuzu doğru şekilde uygulamamış olabilir, burayı nerede kullanacaksınız.timeSliderLabel ve this.timeSliderHintLabel ? (cevabınızda gösterilmiyor). – David