ExtJS4控制器没有得到存储(null)

时间:2012-05-22 09:57:29

标签: extjs4

我有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();
    },

2 个答案:

答案 0 :(得分:1)

添加

stores:
[
  'Projects'
],

到控制器代码然后你可以使用

getProjectsStore();

参考。 看一下http://docs.sencha.com/ext-js/4-0/#!/guide/mvc_pt3,1。参考文献

答案 1 :(得分:0)

您是否配置了代理来加载数据?

无论如何     型号:[型号名称],     商店:[商店名称],

进入控制器

设置为Store autoLoad:true;

将代理设置为模型以告知如何将数据加载到存储中。

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