Tôi có một kết hợp trong ứng dụng extjs của mình và tôi muốn hiển thị 'Bạn có chắc chắn là ?' xác nhận cửa sổ cho người dùng và ngăn thay đổi nếu người dùng nói không.Tôi làm cách nào để Người dùng xác nhận sự kiện thay đổi combobox trong ExtJ?
Vì hộp xác nhận của JavaScript là đồng bộ, nó hoạt động bình thường. Nhưng sử dụng Ext JS, thông báo xác nhận được hiển thị và phần còn lại của mã của tôi sẽ được thực hiện trước khi người dùng trả lời. Đây là mã của tôi:
// JavaScript confirm box
{
xtype: 'combo',
...
...
...
listeners: {
beforeselect: function(combo, record, index) {
if(confirm('Are you sure ?') == false)
{
return false; // prevent combo from changing
}
// else continue
}
}
}
// Ext JS message box (to confirm)
{
xtype: 'combo',
...
...
...
listeners: {
beforeselect: function(combo, record, index) {
Ext.Msg.show({
title: 'Warning',
msg: 'Are You Sure ?',
buttons: Ext.Msg.YESNO,
fn: function(btn) {
if (btn == 'yes') {
// continue and set new value on combo
}
else if (btn == 'no') {
// prevent combo from changing
}
}
});
}
}
}
Vấn đề là Ext.Msg.show
được một chức năng gọi lại và không chờ đợi cho người dùng trả lời và chúng tôi không thể ngăn chặn thay đổi combobox.
Tôi nên làm gì?
không hoạt động, bởi vì trong quá trình chọn lựa, chúng tôi chưa biết giá trị được chọn mới! –
Hãy suy nghĩ và sau đó trả lời –
Bạn biết giá trị được chọn trong 'beforeselect' nó là đối số thứ hai (ghi trong câu trả lời của anh chàng trên). Để có được giá trị bạn có thể sử dụng 'record.get ([trường giá trị combo]); ' – Geronimo