And*_*oob 5 javascript extjs extjs4.2
我有一个非常简单的程序,我尝试将商店连接到Ext.panel.Grid.我似乎无法在我的Main.js调用中获取Ext.data.StoreManager.lookup()以返回除"undefined"之外的任何内容.Ext.create('LeaveRequestGrid.store.LeaveRequestStore')似乎有效(有一些警告),但我想知道正确的方法是做什么的.
LeaveRequestStore.js:
Ext.define('LeaveRequestGrid.store.LeaveRequestStore', {
extend: 'Ext.data.Store',
storeId: 'leaveRequestStore',
autoLoad: true,
fields: [
'dateCreated',
'startDate',
'endDate',
'leaveType',
'totalHours',
'approver',
'status'
],
data: {
'leaveRequest' : [
{
'dateCreated': '12/01/2013' ,
'startDate' : '01/01/2014',
'endDate' : '01/02/2014' ,
'leaveType' : 'Paid Admin Leave' ,
'totalHours' : 16 ,
'approver' : 'John Smith' ,
'status' : 'Pending'
},
{
'dateCreated': '01/01/2014' ,
'startDate' : '02/01/2014',
'endDate' : '02/02/2014' ,
'leaveType' : 'Vacation' ,
'totalHours' : 16 ,
'approver' : 'John Smith' ,
'status' : 'Pending'
},
{
'dateCreated': '02/01/2013' ,
'startDate' : '03/01/2014',
'endDate' : '03/02/2014' ,
'leaveType' : 'Paid Time Off' ,
'totalHours' : 16 ,
'approver' : 'John Smith' ,
'status' : 'Pending'
}
]
},
proxy: {
type: 'memory',
reader: {
type: 'json',
root: 'leaveRequest'
}
}
})
Run Code Online (Sandbox Code Playgroud)
Main.js:
Ext.define('LeaveRequestGrid.view.Main', {
extend: 'Ext.container.Container',
requires:[
'Ext.grid.Panel',
'LeaveRequestGrid.store.LeaveRequestStore'
],
xtype: 'app-main',
layout: {
type: 'fit'
},
items: [
{
xtype: 'grid',
title: '<div style="text-align:center">Leave Requests</div>',
//store: Ext.create('LeaveRequestGrid.store.LeaveRequestStore'),
store: Ext.data.StoreManager.lookup('leaveRequestStore'),
columns: [
{text: 'Date Created', dataIndex: 'dateCreated', flex: 1},
{text: 'Start Date', dataIndex: 'startDate', flex: 1},
{text: 'End Date', dataIndex: 'endDate', flex: 1},
{text: 'Leave Type', dataIndex: 'leaveType', flex: 1},
{text: 'Total Hours', dataIndex: 'totalHours', flex: 1},
{text: 'Approver', dataIndex: 'approver', flex: 1},
{text: 'Status', dataIndex: 'status', flex: 1}
]
}
]
});
Run Code Online (Sandbox Code Playgroud)
I figured it out.
You define your stores: ['LeaveRequestStore'] in Application.js. Then, in Main.js (or whatever file your gridpanel is in), you simple say store: 'LeaveRequestStore'. That's it. No need to call Ext.getStore('LeaveRequestStore') or Ext.data.StoreManager.lookup('LeaveRequestStore'). when referencing a store in the store property.