【问题标题】:Sencha keyed many to one relation, with complex (namespace) nameSencha 键控多对一关系,具有复杂的(命名空间)名称
【发布时间】: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


    【解决方案1】:

    对于命名空间的使用我找到了一个解决方案,引用字段的the getterName 属性会有所帮助。连同补充的inverseTicket 类的定义将变为:

    Ext.define('Ticket', {
        extend: 'Ext.data.Model',
        fields: ['id', 'title', {
            name: 'customerId',
            reference: {
                type: 'Look.Out.Customer',
                inverse: 'tickets',
                getterName: 'getCustomer',
                setterName: 'setCustomer',
            }
        }]
    });
    

    虽然我无法找到有关自动命名的信息(除了“它基于角色并且主要添加 -s”),但能够手动命名生成的方法可以回避这个问题。

    【讨论】:

      猜你喜欢
      • 2017-10-28
      • 2015-04-25
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多