【发布时间】:2018-07-31 11:33:06
【问题描述】:
sencha 上的official documentation 有一个简单的多对一关系示例。它使用“引用”字段来识别关系。
下面是一个稍加修改的例子,这很有效:
Ext.define('Customer', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
Ext.define('Ticket', {
extend: 'Ext.data.Model',
fields: ['id', 'title', {
name: 'customerId',
reference: 'Customer'
}]
});
const customer = new Customer({id: '1', name: 'paul'});
const ticket = new Ticket({id: '1000', title: 'blah', customerId: '1'});
const t = customer.tickets();
const c = ticket.getCustomer();
console.dir(t);
console.dir(c);
现在我尝试进一步修改它,将“Customer”类重命名为使用命名空间(按照 sencha 中的约定):
Ext.define('Long.Name.Customer', {
extend: 'Ext.data.Model',
fields: ['id', 'name']
});
Ext.define('Ticket', {
extend: 'Ext.data.Model',
fields: ['id', 'title', {
name: 'customerId',
reference: 'Long.Name.Customer'
}]
});
const customer = new Long.Name.Customer({id: '1', name: 'paul'});
const ticket = new Ticket({id: '1000', title: 'blah', customerId: '1'});
const t = customer.tickets();
const c = ticket.getCustomer();
但是,现在突然不再生成类,并且有一个未定义 customers.tickets 的数组(并且 ticket.getCustomer 也未定义)。
如何使用具有多对一关系的命名空间?
此外:生成方法的规则是什么? - 我注意到
Customer.tickets() 使用复数(将-s 添加到函数名称中):以“s”结尾的单词会发生什么?这些生成的方法是否有“规则”?
【问题讨论】:
标签: extjs many-to-one auto-generate extjs6-modern