试图获取一个复选框,以便从按钮中侦听切换事件

时间:2012-01-19 16:41:39

标签: extjs4

我是ExtJS的新手,一般只有极少的javascript技能。我正在完成一些任务来学习ExtJS4,但是这个让我望而却步。当切换一个切换按钮时,我正试图让听众检查一个复选框(当然只有一个)。无论我如何编写代码,我都会从Firebug中得到类似的错误:


missing : after property id

togglebtn.toggle: function(tog, true){

关于我做错了什么以及如何纠正错误的想法?

...谢谢

    var togglebtn = Ext.create('Ext.button.Button', {
    enableToggle: true
    , text: 'Checked'
});

var mychkbxgrp = Ext.create('Ext.form.CheckboxGroup', {
    columns: 3
    , alias: 'mycheckboxgroup'
    , items:[{
        boxLabel: 'Item1'
        , name: 'rb'
        , inputValue: '1'
        , listeners:{
            togglebtn.toggle: function(tog, true){
                setValue: true
            }
        }
    },{
        boxLabel: 'Item2', name: 'rb', inputValue: '2'
    },{
        boxLabel: 'Item3', name: 'rb', inputValue: '3'
    }]      
});

Ext.create('Ext.toolbar.Toolbar', {
    renderTo: document.body
    , width: 600
    , height: 40
    , items:[{
        xtype: 'form'
        , height: 30
        , width: 180
        , bodyPadding: 4
        , items:[
            mychkbxgrp
        ]
    }
    , togglebtn
    ]
});

1 个答案:

答案 0 :(得分:0)

事件的AFAIK处理程序必须是函数,并且必须为此对象定义。您正尝试在复选框定义中设置切换处理程序,而它应该在按钮上。 下面是该侦听器的示例实现

var togglebtn = Ext.create('Ext.button.Button', {
    enableToggle: true, 
    text: 'Checked',
    listeners: {
        toggle: function(sender, checked){
            var container = sender.findParentByType(); // find parent container
            var items = container.query('checkboxfield'); // find checkboxes
            Ext.each(items, function(i){ // iterate through checkboxes
                i.setValue(checked); // check/uncheck
            });
        }
    }
});

您必须从复选框定义中删除togglebtn.toggle: function(tog, true){ setValue: true }

工作样本:http://jsfiddle.net/DyctX/