tôi đã đưa ra một giải pháp mà trông thậm chí còn đơn giản hơn và một thử nghiệm nhanh chóng cho thấy không có tác dụng phụ:
Chúng ta có thể rời khỏi Combobox luận hoang sơ nhưng chỉ đơn giản là che giấu mục đã chọn thông qua CSS:
.x-boundlist-selected {
display: none;
}
Và thì đấy, chúng ta không thấy mục được chọn! Không biết như thế nào đáng tin cậy này sẽ là trong mã sản xuất nhưng vẫn đáng xem xét, tôi nghĩ ...
UPDATE. Đây là giải pháp hoàn chỉnh nếu bạn muốn kiểm soát hành vi này qua cấu hình lá cờ của Combobox:
Ext.define('My.ComboBox', {
extend: 'Ext.form.field.ComboBox',
/**
* @cfg {Boolean} hideActive=true
* When true, hides the currently selected value from the dropdown list
*/
hideActive: true,
/**
* Internal method that creates the BoundList
*/
createPicker: function() {
var picker = this.callParent(arguments);
// honor the hideActive flag
if(this.hideActive) {
picker.addCls('x-boundlist-hideactive');
}
return picker;
}
});
Một nơi nào đó trong CSS của bạn:
.x-boundlist-hideactive .x-boundlist-selected {
display: none;
}
CẬP NHẬT 2. Tìm thấy một vấn đề UI với cách tiếp cận của tôi!
Ẩn mục đã chọn từ danh sách thả xuống sẽ giới thiệu một điều hướng để điều hướng bàn phím: mặc dù phần tử được ẩn trực quan, nó vẫn tồn tại và Ext sẽ chọn nó khi bạn bấm phím UP/DOWN. Trực quan có nghĩa là lựa chọn của bạn sẽ biến mất tại một số điểm và bạn sẽ phải nhấn UP/DOWN một lần nữa để đưa nó trở lại thành phần hiển thị tiếp theo.
Cho đến nay tôi không thể tìm thấy bản sửa lỗi dễ dàng cho việc này. Đặt cược tốt nhất của tôi là sửa đổi itemSelector
của danh sách bị ràng buộc (là Chế độ xem dữ liệu), đặt nó thành một cái gì đó như .x-boundlist-item:not(.x-boundlist-selected)
để phần tử đã chọn không đưa nó vào truy vấn.
Trong khi chọn bản thân công trình, nó không giải quyết được vấn đề vì Xem thực hiện truy vấn chọn này trước bất kỳ lớp học bổ sung (bao gồm các lớp sản phẩm được chọn) được áp dụng cho các mặt hàng (điều này xảy ra trong Ext.view.AbstractView.refresh().
Ngoài ra, giải pháp này gây ra thất lạc của danh sách thả xuống khi nó xuất hiện trên các combobox!
tôi đã có một cảm giác rằng cách tiếp cận của tôi là cách quá dễ dàng để làm việc một cách hoàn hảo :)
Đã hỏi cùng một câu hỏi trên diễn đàn của Sencha: http://www.sencha.com/forum/showthread.php?241063-Combobox-hide-selected-value-from-dropdown-list&p=882210 –