2012-07-19 24 views

Trả lời

19

Nói chung, bạn có thể sử dụng phương pháp findRecordByValue trên combobox:

combobox.on('change', function(combobox, newValue, oldValue) { 

    // Get the old and the new records. 
    // NOTE: The underlying store is not guaranteed to 
    //  contain an associated record. 
    var oldRecord = combobox.findRecordByValue(oldValue); 
    if (oldRecord) { 
     // Do something... 
    } 

    var newRecord = combobox.findRecordByValue(newValue); 
    if (newRecord) { 
     // Do something... 
    } 
}); 
+0

Thú vị. Tôi khá mới với extJS, thực hành tốt nhất ở đây là gì? –

+1

Câu hỏi hay. Với nguy cơ nghe cliché, nó phụ thuộc vào trường hợp sử dụng của bạn. Tôi nghĩ có 2 điều quan trọng cần ghi nhớ. Đầu tiên, sự kiện 'select' là một sự kiện UI, trong khi sự kiện' change' là một sự kiện thay đổi trạng thái. Thứ hai, một combobox * sử dụng * cửa hàng của nó để tạo điều kiện thay đổi giá trị trường cơ bản của nó thông qua giao diện người dùng. Kết quả là, sự kiện 'select' sẽ * luôn luôn * tương ứng với một bản ghi trong kho lưu trữ bên dưới, nhưng sự kiện' change' có thể không. –

+0

Hmm Tôi thực sự không biết câu trả lời nào để đánh dấu là chính xác, bởi vì, như bạn đã chỉ ra, câu trả lời đúng tùy thuộc vào trường hợp sử dụng. –

6

Đã tìm ra điều này gần như ngay lập tức sau khi đăng câu hỏi của tôi.

Vấn đề của tôi là tôi đã liên kết với sự kiện sai, tôi đã sử dụng 'thay đổi' thay vì 'chọn'.

Sự kiện lựa chọn cung cấp cho bạn bản ghi với đối tượng đầy đủ chứa trong đó.

+5

Hãy nhận biết rằng 'sự kiện select' sẽ chỉ được kích hoạt nếu những thay đổi giá trị vì người dùng nhấp một tùy chọn trên danh sách. Nếu 'setValue' được gọi là lập trình, chỉ' thay đổi' sẽ kích hoạt. –

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