2

因此,我正在尝试使用模式和命名空间连接模型,但出现此错误:“错误:C2008:需求没有匹配的文件(ExtReactModels.model.Item)”。这是在 ExtReact 中完成的。我应该声明模式和命名空间,还是只导入普通对象?代码中最重要的部分是:

  1. 根类型模型:

export default Ext.define("ExtReactModels.model.RootType", {
	extend: 'Ext.data.Model',
	schema: {
		namespace: 'ExtReactModels.model'
	},
	requires: [
		'Ext.data.proxy.Rest', 'ExtReactModels.model.Item'
	],
	idProperty: 'rootTypeId',
	fields: [
		/* ... */
	],
	proxy: {
		type: 'rest',
		url: '/rootTypes'
	},
	hasOne: [{
		model: 'ExtReactModels.model.Item', name: 'item', associationKey: ">item", instanceName:"item",
		getterName: "getItem", setterName: "setItem"
	}]
});

  1. 产品型号:

export default Ext.define("ExtReactModels.model.Item", {
	extend: 'Ext.data.Model',
	schema: {
		namespace: 'ExtReactModels.model'
	}
	requires: [
		'Ext.data.proxy.Rest'
	],
	idProperty: 'itemId',
	fields: [
		/* ... */		
	],
	proxy: {
		type: 'rest',
		url: '/items'
	},
	hasOne: [{
		model: 'ExtReactModels.model.Application', name: 'application', associationKey: ">application", instanceName:"application",
		getterName: "getApplication", setterName: "setApplication"
	}]
});

4

1 回答 1

1

所以我通过使用我为 Item 导入的普通对象解决了这个问题,并且我定义了单独的 const ,它将保存 Schema 和命名空间的定义,并将在单独的模型中重复,现在我可以在不同的模型中使用这个定义:

import itemModel from './ItemModel';
import {baseModel} from './BaseModel';

export default Ext.define("ExtReactModels.model.RootType", {
	extend: 'Ext.data.Model',
	baseModel,
	requires: [
		'Ext.data.proxy.Rest'
	],
	idProperty: 'rootTypeId',
	fields: [
		/* ... */
	],
	proxy: {
		type: 'rest',
		url: '/rootTypes'
	},
	hasOne: [{
		model: itemModel, name: 'item', associationKey: ">item", instanceName:"item",
		getterName: "getItem", setterName: "setItem"
	}]
});

如果有人为此找到了不同的方法,请告诉我!

于 2018-03-27T08:29:19.833 回答