2

你好朋友我在 sencha touch 2.0 中卡住了。我正在我的应用程序中创建一个屏幕,我需要在其中获取复选框值(选中或未选中)。我指的是 sencha 文档中的这个例子,但我无法理解如何使用 Ext.ComponentQuery.query('what here come?')[0]。

编辑

这是我的代码:-

Ext.define('MyApp.view.groupList',{
    extend : 'Ext.navigation.View',
    requires: ['Ext.field.Search', 'Ext.TitleBar'],
    alias: "widget.groupList",
    itemId: "gList",
    initialize: function(){
        this.callParent(arguments),
        var checkBox = {
            xtype: 'checkboxfield',
              name : 'all',
            //  label: 'All',
              value: 'all',
              lableWidth: "0",
              width: 1,
              padding: '0 0 15 30',
              checked: false
        };

        var sendBtn = {
                itemId: 'sendBtn',
                xtype: 'button',
                text: 'Send',
                ui: 'action',
                handler: function() {
                    var check = Ext.ComponentQuery.query('navigationview')[0],
                        values = check.getValues();

                    Ext.Msg.alert(null,
                        "Selected All: " + ((values.all) ? "yes" : "no")

                    );
                }     
        };

        var topToolbar = {
            xtype : "toolbar",
            title : "Groups",
            docked : "top",
            items: [
                    checkBox,
                    {xtype: 'spacer'},      
                  //  searchBtn, 
                    sendBtn
            ],
        };
        var list = {
                xtype: "grlist",
                store: Ext.getStore("grStore")
        };

        this.add([list,topToolbar]);
    },

    config: {
        navigationBar: {
            hidden: true,
        },
    }
});

我收到以下错误:-

TypeError: Result of expression 'check.getValues' [undefined] is not a function. at
 file:///android_asset/www/app/view/group_list.js

所以请让我了解 Ext.ComponentQuery 如何与一些示例代码或教程一起使用。

提前谢谢。

4

2 回答 2

6

Ext.ComponentQuery接受 3 种类型的参数:

  • xtype,例如:Ext.ComponentQuery.query('navigationview')
  • id,例如:Ext.ComponentQuery.query('my-nav-view-id')
  • attributes,例如:Ext.ComponentQuery.query('navigationview[name="my nav view"]')

无论参数是哪种类型,Ext.ComponentQuery.query()始终返回匹配组件的数组。在示例中,他们添加[0]是因为可以确保结果数组仅包含 1 个项目。

在您的代码中,您似乎试图查询 xtype 的组件navigationview,这种组件没有getValues方法(仅适用于Ext.form.Panel派生类)。因此,如果要检索值,则必须使用如下查询:

Ext.ComponentQuery.query('checkboxfield')[0]

希望能帮助到你。

于 2012-04-20T11:34:21.813 回答
0

Ext.ComponentQuery 文档在这里...

在本例中不应使用它。由于不使用全局搜索方法,此代码将更具弹性且速度更快。

var sendBtn = {
            itemId: 'sendBtn',
            xtype: 'button',
            text: 'Send',
            ui: 'action',
            scope: this,
            handler: function() {
                var check = this.down('#checkboxfield'),
                values = check.getValue();
                Ext.Msg.alert(null,
                    "Selected All: " + ((values.all) ? "yes" : "no")
                );
            }     
    };

我也更正了代码示例,方法是 getValue()

注意: 我知道这个答案已经过时了,它无关紧要,但是接受的方法鼓励在不需要的地方使用 Ext.ComponentQuery,这只是糟糕的代码,并且具有假设 ui 将保持在同一个集合中的逻辑代码格式。

于 2016-01-27T11:27:54.003 回答