私は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();
},