2

次のように、sencha touch でストアを定義しています。

store.js

  Ext.define('bluebutton.store.BlueButton.Testing', {
    extend: "Ext.data.Store",
    requires: [
              'bluebutton.model.BlueButton.Testing'
    ],
    config: {
        storeId: 'testingstore',
        model: 'bluebutton.model.BlueButton.Testing'
    }
});

Model.js

    Ext.define('bluebutton.model.BlueButton.Testing', {
    extend: 'Ext.data.Model',

    requires: [
             'Ext.data.proxy.LocalStorage'
    ],

    config: {
        fields: [
            { name: 'first', type: 'string' },
            { name: 'second', type: 'string' }
        ],
        proxy: {
            type: 'localstorage',
            id: '_codeAnalyzerLocalStorage'
        }
    }
});

getStore() を呼び出す必要があります

    Ext.define('bluebutton.view.BlueButton.testing', {
    extend: 'Ext.form.Panel',
    xtype: 'testing',
       requires: [

    'bluebutton.view.BlueButton.TransactionList',
    'bluebutton.view.BlueButton.MemberPopUp',
     'bluebutton.view.BlueButton.MemberDetail',
     'bluebutton.store.BlueButton.MemberList',

     'bluebutton.model.BlueButton.Testing',
     'bluebutton.store.BlueButton.Testing'




    ],

    config: {
     id:'register',
        items :[

              {
                    xtype: 'textfield',
                    name: 'name',
                    label: 'Name'
                },
                {
                    xtype: 'emailfield',
                    name: 'email',
                    label: 'Email'
                },



                {

                    xtype: 'button',
                    text: 'Test Local',
                     handler: function(button) {


                       var test =   Ext.getCmp('testingstore').getStore();   

                       alert(test);





                       }




                },









        ],


   }

});

しかし、私はこのエラーが発生します

getStore is undefined

助けてください。ありがとう

4

3 に答える 3

5

次のコードで試してみましたが、問題なく動作します!

お店:

Ext.define('bluebutton.store.BlueButton.Testing', {
    extend : "Ext.data.Store",
    requires : [ 'bluebutton.model.BlueButton.Testing' ],
    config : {
        storeId : 'testingstore',
        model : 'bluebutton.model.BlueButton.Testing'
    }
});

モデル:

Ext.define('bluebutton.model.BlueButton.Testing', {
    extend : 'Ext.data.Model',
    requires : ['Ext.data.proxy.LocalStorage'],
    config : {
        fields : [{
                    name : 'first',
                    type : 'string'
                }, {
                    name : 'second',
                    type : 'string'
                }],
        proxy : {
            type : 'localstorage',
            id : '_codeAnalyzerLocalStorage'
        }
    }
});

見る:

Ext.define('bluebutton.view.BlueButton.Testing', {
        extend : 'Ext.form.Panel',
        xtype : 'testing',
        config : {
            fullscreen : true,
            id : 'register',
            items : [{
                        xtype : 'textfield',
                        name : 'name',
                        label : 'Name'
                    }, {
                        xtype : 'emailfield',
                        name : 'email',
                        label : 'Email'
                    }, {
                        xtype : 'button',
                        text : 'Test Local',
                        handler : function(button) {
                            var test = Ext.getStore('testingstore');
                            console.log(test);
                        }
                    }]
        }
    });

app.js:

Ext.Loader.setConfig({
    enabled : true,
});

Ext.application({

    name : 'bluebutton',

    views : [ 'BlueButton.Testing', ],  
    stores : [ 'BlueButton.Testing', ], 
    models : [ 'BlueButton.Testing', ], 

    launch : function() {
        Ext.create('bluebutton.view.BlueButton.Testing');
    }

});

ボタンを押すと、コンソールにストアが記録されます。

しかし、ビューではなくコントローラーにボタンアクションを配置すると、より良いコードになると思います!

button config:
    {
        xtype : 'button',
        text : 'Test Local',
        action : 'buttonTest'

    }

コントローラ:

Ext.define('bluebutton.controller.BlueButton.Testing', {
    extend : 'Ext.app.Controller',
    config : {
        control : {
            'button[action="buttonTest"]' : {
                tap : 'testButtonTap'
            }
        }
    },
    testButtonTap : function() {
        var test = Ext.getStore('testingstore');
        console.log(test);
    }
});
于 2013-01-29T08:13:07.467 に答える
1

ストアを取得できます

var test =   Ext.getStore('testingstore');

Sencha Touch API: http://docs.sencha.com/touch/2-1/#!/api/Ext-method-getStore

于 2013-01-25T10:00:34.530 に答える
0

app.js にストアを追加する必要があります

storeId 参照の sencha バグ (私が知っているように、アプリ スクリプトの js ロード順序) のため、store配列にストアを配置する必要があるため、storeId を使用する場合は、ストアを app.js に配置します。

Ext.application({

name : 'bluebutton',

views : [ 'BlueButton.Testing', ],  

stores : [ 'BlueButton.Testing', ], //this is the key


models : [ 'BlueButton.Testing', ], 

launch : function() {
    Ext.create('bluebutton.view.BlueButton.Testing');
}

});

于 2015-02-15T02:10:10.940 に答える