时间:2010-07-16 10:25:34

标签: extjs

再次我可能是愚蠢的,我遇到了对象的监听器事件。

我有:

new Ext.form.Radio({
                    boxLabel:'Yes',
                    id: 'car_price_type_yes',
                    name: 'car_price_type',
                    value: 1,
                    listeners: {
                        select: function (e) {
                            alert('x');
                        }
                    }
                })

我正在尝试在单击单选按钮时显示警报。

感谢。

2 个答案:

答案 0 :(得分:1)

问题来自将单选按钮视为某种非正常实体。他们似乎根本不叫听众。

通过文档,论坛,源代码和其他所有内容后,我偶然发现了处理程序方法,如果你想检测“点击”,你似乎必须声明它们有一个处理程序(如下所示) “事件,或”更改“事件或”选择“事件。我能够获得4.1.3实际生成的唯一“事件”是调用我的处理函数,其他事件名称似乎都没有产生任何东西。文档中的许多人都指出,改变并不总是会发生变化,我从来没有设法解决它。

{
    boxLabel: 'Field Based'
    , name: 'alert_type'
    , inputValue: 'field'
    , xtype: "radiofield"
    , listeners: {
        // won't be called
        click: function(a,b,c,d) {  
            console.log("FB",a,b,c,d);
        }
        // won't be called
        ,change: function(a,b,c,d) {  
            console.log("Change",a,b,c,d);
        }
        // won't be called
        , select: function(field, newValue, oldValue) { 
            console.log(field, "Radio Selected ", newValue, "to", oldValue);
        }
        // won't be called
        , check: function(field, newValue, oldValue) {
            console.log(field, "Radio Checked ", newValue, "to", oldValue);
        }
    }
    // WILL BE CALLED
    , handler: function(field, state) {
        console.log(field, state, c, d)
    }
},

处理程序将生成日志输出,如:

constructor {boxLabel: "Field Based", name: "alert_type", inputValue: "field", listeners: null, handler: function…}
true

答案 1 :(得分:-2)

您想要check事件。你真的应该更熟悉docs,这对这类问题有帮助。

编辑:似乎人们对这个答案不满意。好的,从Ext 4.x开始,似乎change事件就是你想要的无线电/复选框。