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.ComponentQuery3 種類のパラメーターを受け入れます。

  • 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がありません(および派生クラスでのみ使用できます)。したがって、値を取得する場合は、次のようなクエリを使用する必要があります。getValuesExt.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 の使用を奨励しています.Ext.ComponentQueryは単にひどいコードであり、UIが同じセットに残ると仮定する論理コードを持っている必要はありません.フォーマット。

于 2016-01-27T11:27:54.003 に答える