ExtJS 5.1 Store加载出现404 Model未找到错误的解决咨询
解决ExtJS 5.1中Store引发的"404 model not found"错误
以下是针对你遇到问题的具体解决方案:
确保Store明确关联正确的Model
检查Store配置,必须通过完整命名空间指定model属性,ExtJS 5.x不会自动推断未带命名空间的Model类,示例:Ext.define('MyApp.store.TestStore', { extend: 'Ext.data.Store', model: 'MyApp.model.TestModel', // 完整命名空间的Model类 proxy: { type: 'ajax', url: '/api/test', reader: { type: 'json', rootProperty: 'data' } } });不要仅写
model: 'TestModel',否则ExtJS会尝试加载不存在的文件路径,触发404错误。验证Model的定义与路径配置
确认Model已正确定义,且所在路径被应用配置识别:- Model文件需放在对应命名空间的目录下,比如
MyApp.model.TestModel对应app/model/TestModel.js - 在
app.json中配置正确的路径映射:"paths": { "MyApp": "app" } - Model定义需符合规范:
Ext.define('MyApp.model.TestModel', { extend: 'Ext.data.Model', fields: [ {name: 'id', type: 'int'}, {name: 'name', type: 'string'} ] });
- Model文件需放在对应命名空间的目录下,比如
动态操作Store时不要省略Model配置
调用setStore或Ext.create创建Store实例时,必须明确指定model属性,避免ExtJS尝试动态加载未定义的Model:// 错误写法:无Model配置会触发404 var badStore = Ext.create('Ext.data.Store', { proxy: {type: 'ajax', url: '/api/test'} }); // 正确写法:明确关联Model var goodStore = Ext.create('Ext.data.Store', { model: 'MyApp.model.TestModel', proxy: {type: 'ajax', url: '/api/test'} }); combo.setStore(goodStore);修复Memory代理无法加载数据的问题
Memory代理不需要远程请求,需直接为Store提供数据,通过data配置或loadData方法:// 静态配置数据 Ext.define('MyApp.store.TestMemoryStore', { extend: 'Ext.data.Store', model: 'MyApp.model.TestModel', proxy: {type: 'memory', reader: {type: 'json'}}, data: [ {id: 1, name: '选项1'}, {id: 2, name: '选项2'} ] }); // 动态加载数据 store.loadData([{id: 3, name: '选项3'}]);检查Ext.Loader配置
确保加载器已启用并配置正确路径,在应用入口添加:Ext.Loader.setConfig({ enabled: true, paths: { 'MyApp': 'app' } });禁用Loader会导致ExtJS无法正确解析类路径,引发404错误。
内容的提问来源于stack exchange,提问作者ian viñales
相关产品推荐
相关产品推荐

