2

私はProjectsController好きです:

Ext.define('SimpleTodo.controller.ProjectsController', {
    extend: 'Ext.app.Controller',
    refs: [
        { ref: 'addProjectPanel', selector: '#addProjectPanel' }
    ],
    init: function() {
        this.control({
            'button[action=addProject]': {
                click: this.addProject
            }
        });
    },
    addProject: function() {
        var form = this.getAddProjectPanel().getForm();
        if (form.isValid()) {
            var projectsStore = Ext.data.StoreManager.lookup('projects'); // Am getting null here
            projectsStore.add(form.getFieldValues());
            projectsStore.sync();
        } else {
            Ext.Msg.alert('INVALID!');
        }
    }
});

問題は、ストアがまだ初期化されていないためだと思いますか? では、コードをどのように変更すればよいでしょうか? 私の店は次のように定義されています:

Ext.define('SimpleTodo.store.Projects', {
    extend: 'Ext.data.Store',
    requires: [
        'SimpleTodo.model.Project'
    ],
    model: 'SimpleTodo.model.Project',
    storeId: 'projects'    
});

ストアを読み込もうとしたときに同じ問題が発生し、Gridview/Table にデータが入力されました。関数を起動するように移動することで修正しましたが、それは正しい方法でしょうか? ドキュメントでinitは、使用されています

Ext.define('SimpleTodo.controller.SidebarController', {
    extend: 'Ext.app.Controller',
    ...
    launch: function() {
        var projectsStore = Ext.data.StoreManager.lookup('projects');
        projectsStore.load();
    },
4

2 に答える 2

1

追加

stores:
[
  'Projects'
],

コントローラーコードに追加すると、使用できます

getProjectsStore();

参照する。http://docs.sencha.com/ext-js/4-0/#!/guide/mvc_pt3を見てください。

于 2012-05-25T09:42:08.023 に答える
0

データをロードするためのプロキシを構成しましたか?

とにかく場所モデル:[モデルの名前]、店舗:[店舗の名前]、

コントローラに

Store autoLoad:trueに設定します。

プロキシをモデルに設定して、データをストアにロードする方法を指示します。

参照: http: //docs.sencha.com/ext-js/4-1/#!/api/Ext.data.proxy.Proxy

于 2012-05-22T12:17:39.920 に答える