Ext JS - 将Panel绑定到数据存储的最佳方法

时间:2016-04-20 14:07:15

标签: javascript extjs

我是Ext JS的新手,并注意到网格/树可以绑定到数据源(Store)的两种方式:

  1. Ext.data.StoreManager.lookup('someStoreId');
  2. Ext.getStore('someStoreId');
  3. Ext.getStore只是StoreManager.lookup的一些简写吗?两者之间是否存在性能差异,或者将其中一种用于另一种之间是最佳做法吗?

1 个答案:

答案 0 :(得分:2)

是的,它们是一回事,你打电话给哪一个并不重要,getStore用于输入便利和it calls StoreManager

http://docs.sencha.com/extjs/5.1/5.1.1-apidocs/#!/api/Ext-method-getStore

  

Ext.data.StoreManager.lookup。

的快捷方式

他们都是可怕的想法。您基本上是在创建全局变量。您应该更喜欢将引用传递给您创建的商店。

拿走他们的grid example

Ext.create('Ext.data.Store', {
    fields:[ 'name', 'email', 'phone'],
    data: [
        { name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
        { name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
        { name: 'Homer', email: 'homer@simpsons.com', phone: '555-222-1244' },
        { name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
    ]
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        { text: 'Name', dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

可以重写它,以便商店不可全局访问,因为商店经理是全局单身人士。

var store = Ext.create('Ext.data.Store', {
    storeId: 'simpsonsStore',
    fields:[ 'name', 'email', 'phone'],
    data: [
        { name: 'Lisa', email: 'lisa@simpsons.com', phone: '555-111-1224' },
        { name: 'Bart', email: 'bart@simpsons.com', phone: '555-222-1234' },
        { name: 'Homer', email: 'homer@simpsons.com', phone: '555-222-1244' },
        { name: 'Marge', email: 'marge@simpsons.com', phone: '555-222-1254' }
    ]
});

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: store,
    columns: [
        { text: 'Name', dataIndex: 'name' },
        { text: 'Email', dataIndex: 'email', flex: 1 },
        { text: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});