2012-05-04 10 views
5

Tôi đang sử dụng ExtJS 3.3 nhưng điều này có thể liên quan đến các phiên bản khác.Làm cách nào để thêm nhãn vào một trong hai đầu của điều khiển ExtJS Slider?

Tôi đang sử dụng điều khiển Thanh trượt trong giao diện người dùng dựa trên ExtJS. Tôi có một chú giải công cụ được thiết lập để hiển thị giá trị khi bạn kéo nó, theo ví dụ "Slider with Tip" ở đây: http://dev.sencha.com/deploy/ext-3.3.1/examples/slider/slider.html

Dường như tôi là UX khá nghèo để có một thanh trượt không có dấu hiệu cho thấy giá trị là (hoặc trong trường hợp này không phải cho đến khi bạn bắt đầu trượt nó). Tôi muốn thêm nhãn vào một trong hai đầu để hiển thị phạm vi mà thanh trượt đại diện. Một cái gì đó như thế này:
Example of possible Slider labels

Vì vậy, tất nhiên, tôi tự hỏi: Đây có phải là có thể với các tiêu chuẩn kiểm soát bản thân? (Tôi nhìn vào tài liệu, nhưng không có gì nhảy ra khỏi tôi)? hoặc là có một cách gọn gàng để đạt được điều này?

+0

Tôi không nghĩ rằng điều này đi ra khỏi hộp, nhưng bạn có thể tạo nó như một phần mở rộng thanh trượt mà không gặp nhiều rắc rối. – AMember

Trả lời

3

Đây là tôi đã đi về để làm điều đó:

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;' 
    }); 

UPDATE:

Cách bố trí có thể được sử dụng như thế này:

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

đâu getThumbText là một phương pháp helper tôi sử dụng để có được giá trị nhãn chính xác.

+0

Cảm ơn câu trả lời của bạn, xin lỗi về câu trả lời chậm của tôi (đang ở trong một dự án khác). Thật không may tôi không nghĩ rằng giải pháp của bạn mang lại cho tôi những gì tôi sau. Tôi muốn có 2 phần văn bản tĩnh, một ở mỗi đầu của thanh trượt cho biết người dùng phạm vi giá trị có thể là gì. Điều này sẽ độc lập với nhãn trường và chú giải công cụ bật lên ở bất kỳ giai đoạn nào. Dường như với tôi rằng mã của bạn làm cho nhãn của trường thay đổi khi giá trị thanh trượt được thay đổi. – David

+0

đó là chính xác nhưng nó cũng có thể được tĩnh bằng cách loại bỏ sự kiện thay đổi và ngăn chặn các thiết lập thử nghiệm ... – AMember

+0

Nó có thể là tôi đã không thực hiện mã của bạn một cách chính xác, nơi bạn sử dụng this.timeSliderLabel và this.timeSliderHintLabel ? (nó không được hiển thị trong câu trả lời của bạn). – David