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