ExtJs在视图中创建存储返回原型而不是对象

时间:2014-01-23 16:39:16

标签: extjs extjs4 extjs4.1 extjs-mvc

问题

我想创建商店并将其分配给Ext.grid.Panel。 在使用initComponent创建新商店时,在Panel的Ext.create()中,会返回原型而不是实际对象。

使用过的 ExtJs 版本 4.1.1 ,其中包含ext-dev.js

更新

当我包含ext-all-dev.js时,它正在运行,但当我使用 Sencha Cmd 构建应用程序时,会出现同样的错误。 但是控制台中不会显示任何警告。

这里有什么问题?感谢任何建议,想法..

解决方案

今天我找到了解决方案,它并不专用于下面列出的任何文件。 app文件夹中的一个文件定义了Ext命名空间中的商店。

删除文件后,一切都按预期工作。


异常

稍后我第一次使用商店时会遇到Cannot read property 'buffered' of undefined异常。 尝试访问属性bufferd但原型没有。

Chrome Dev的原型。控制台

serviceStore: constructor
  __proto__: TemplateClass
  $className: "AP.store.Services"
  allowDeselect: true
  config: emptyFn
  configMap: TemplateClass
  initConfigList: Array[0]
  initConfigMap: Object
  model: "AP.model.Service"
  requires: function constructor() {
  self: function constructor() {
  superclass: TemplateClass
  __proto__: TemplateClass

网格面板

Ext.define('AP.view.ServiceList', {
  extend: 'Ext.grid.Panel',
  requires: 'AP.store.Services',
  hideHeaders: true,
  dialogeFilter: null,
  allowDeselect: true,

  initComponent: function() {
      console.log('ServiceList.initComponent()');
      var me = this;

      this.columns = [{
              text: 'Name',
              dataIndex: 'name',
              flex: 1,
              renderer: this.renderServiceCell
         }];

      //after the Ext.Create the above prototype is in the variable serviceStore
      //not the expected object
      var serviceStore = Ext.create('AP.store.Services');
      Ext.apply(me, {
          store: serviceStore
      });

    this.callParent(arguments);
}, ...

存储

Ext.define('AP.store.Services', {
  extend: 'Ext.data.ArrayStore',
  requires: 'AP.model.Service',
  model: 'AP.model.Service',
  allowDeselect: true
});

模型

Ext.define('AP.model.Service', {
  extend: 'Ext.data.Model',
  fields: ['id', 'name'],
  allowDeselect: true
});

网格面板声明定义

我在没有initComponent函数的情况下通过以声明方式定义存储来尝试它。 但我也得到了例外Cannot read property 'buffered' of undefined ......

Ext.define('AP.view.ServiceList', {
  extend: 'Ext.grid.Panel',
  alias: 'widget.servicelist',
  requires: 'AP.store.Services',

  store :  'Services',
  columns: [{
              text: 'Name',
              dataIndex: 'name',
              flex: 1,
              renderer: this.renderServiceCell
          }],

...

0 个答案:

没有答案