2009-06-12 24 views
22

tôi đã cố gắng để tạo ra một ComboBox đơn giản:ExtJS ComboBox triggerAction: "tất cả" thực sự làm gì?

var combo1 = new Ext.form.ComboBox({ 
    store: [1,2,3], 
    renderTo: document.body 
}); 

Nhưng bằng văn bản theo cách này nó hoạt động kỳ lạ:

  • Khi bạn lần đầu tiên pop mở thả xuống, nó cung cấp ba lựa chọn.
  • Bạn chọn một.
  • Nhưng khi bạn cố gắng thay đổi lựa chọn của mình, menu thả xuống chỉ cung cấp một lựa chọn - một lựa chọn bạn đã chọn trước đây.

tôi so mã của tôi để các samples trên trang chủ Ext và phát hiện ra rằng việc thêm triggerAction: "all" giải quyết vấn đề của tôi:

var combo2 = new Ext.form.ComboBox({ 
    triggerAction: "all", 
    store: [1,2,3], 
    renderTo: document.body 
}); 

ExtJS tài liệu cho triggerAction không nói với tôi rất nhiều:

Các hành động để thực hiện khi kích hoạt được nhấp vào. Sử dụng 'tất cả' để chạy các truy vấn theo quy định của allQuery cấu hình tùy chọn (mặc định là 'truy vấn')

Tôi đã không được xác định tùy chọn allQuery. Trên thực tế, tôi không muốn thực hiện một truy vấn đến máy chủ cả.

Vì vậy, điều này triggerAction thực sự làm gì?

Và đặt nó thành "all" thực sự những gì tôi nên làm khi tôi chỉ muốn một combobox tĩnh đơn giản?

Trả lời

22

Sau khi chọn một mục, danh sách được lọc để khớp với giá trị văn bản hiện tại. Trong trường hợp của bạn, nó luôn luôn chính xác giá trị được chọn, nhưng rõ ràng hơn với các giá trị đa ký tự (xem ví dụ về tên trạng thái trong Ext). Nếu bạn xóa giá trị đã chọn, menu thả xuống sẽ quay trở lại để có tất cả các giá trị. triggerAction:'all' có nghĩa là không lọc, luôn hiển thị tất cả các giá trị.

+0

Cảm ơn. Giờ thì tôi đã hiểu. –

+3

Điều này có ý nghĩa bây giờ, nhưng đây là một lựa chọn thực sự kém tên! – duma

+0

Lý do cho tên là cấu hình được thừa kế từ 'TriggerField' và do đó được sử dụng rộng rãi hơn bên ngoài combo và thậm chí không phải liên quan đến lọc trong các triển khai khác. Nhưng có, một bí danh kết hợp cụ thể có nhiều tính mô tả hơn có thể đẹp. –

Các vấn đề liên quan