sReceiving:Build之后的“无法识别的别名:proxy.sessionStorage”

时间:2017-04-26 11:23:55

标签: extjs sencha-cmd

我完成了我的项目Build并且收到错误,我的应用程序无法识别会话存储。

  proxy: {
    type: 'sessionstorage',
    id: 'sessionTimeline',
    reader: {
      type: 'json',
      rootProperty: 'query'
    }
  }

当我将类型更改为“内存”时,我的代码工作正常,但类型必须是sessionstorage,因为我想在刷新页面时保存商店中的所有数据。

  

未捕获错误:[Ext.createByAlias]无法识别的别名:   proxy.sessionstorage       在Ext.Inventory.instantiateByAlias(app.js?_dc = 1493205201288:13481)       在Object.createByAlias(app.js?_dc = 1493205201288:5423)       在constructor.applyProxy(app.js?_dc = 1493205201288:85923)       在constructor.setter [as setProxy](app.js?_dc = 1493205201288:9021)       在构造函数。 (app.js _dc = 1493205201288:9000)       在constructor.createImplicitModel(app.js?_dc = 1493205201288:86564)       在constructor.applyFields(app.js?_dc = 1493205201288:85893)       在constructor.setter [as setFields](app.js?_dc = 1493205201288:9021)       在Ext.Configurator.configure(app.js?_dc = 1493205201288:9610)       在constructor.initConfig(app.js?_dc = 1493205201288:11119)

我不知道什么是错误的,因为我的应用程序可以在构建之前识别会话存储,我试图在很多方面解决这个问题,但是真的很难,因为app.js是紧凑的。

我的会话存储代码:

Ext.define('ES.store.Timeline', {
  extend: 'Ext.data.Store',
  alias: 'store.timeline',
  storeId: 'timeline',
  fields: [{
    name: 'vid',
    type: 'int'
  }, {
    name: 'time',
    type: 'string'
  }, {
    name: 'lat',
    type: 'float'
  }, {
    name: 'lng',
    type: 'float'
  }, {
    name: 'address',
    type: 'string'
  }, {
    name: 'dir',
    type: 'string'
  }, {
    name: 'vel',
    type: 'string'
  }, 'hidden'],
  pageSize: 500,
  autoSync: true,
  sorters: [{
    property: 'time',
    direction: 'DESC'
  }],
  data: {
    query: []
  },
  proxy: {
    type: 'sessionstorage',
    id: 'sessionTimeline'
  },
  filters: [{
    property: 'hidden',
    value: false
  }]
});

我在视图上调用会话存储:

...

    store: {
        type: 'timeline'
    },

...

如何修复该错误?谢谢。

1 个答案:

答案 0 :(得分:0)

您的商店缺少要求:

requires:[
    'Ext.data.proxy.SessionStorage'
]

这告诉ExtJS在构建商店之前加载文件data/proxy/SessionStorage.js。只有在加载data/proxy/SessionStorage.js文件时,才会注册别名proxy.sessionstorage,因此代理工厂可以正确地实例化代理。