javascript - Ext JS - 将面板绑定(bind)到数据存储的最佳方式

标签 javascript extjs

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

  1. Ext.data.StoreManager.lookup('someStoreId');
  2. Ext.getStore('someStoreId');

Ext.getStore 只是 StoreManager.lookup 的简写吗?两者之间是否存在性能差异,或者使用一个优于另一个被认为是最佳实践?

最佳答案

是的,它们是同一个东西,你叫哪个并不重要,getStore 是为了方便输入,it calls StoreManager .

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

Shortcut to 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()
});

关于javascript - Ext JS - 将面板绑定(bind)到数据存储的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746390/

相关文章:

css - 这是重新设计 ExtJS 应用程序样式的正确方法吗?

javascript - 如果在页面顶部并且用户向上滚动,则将类添加到元素

javascript - electron-builder 是否会使用它不需要的依赖项

javascript - 带有音频和innerHTML 的点击回调无法按预期工作?

javascript - 用Java对Http请求进行编码和解码

javascript - 如何使用 jQuery 从外部 URL 获取元标记

javascript - 从单选组中获取选定的单选按钮 (ExtJS)

javascript - 应用空文本后标记字段不起作用

extjs - 如何动态更改 Ext Js 4 中文本字段的 fieldLabel?

css - 如何让 ExtJS ComboBox 与文本内联显示?