javascript - 从 ExtJS 4 中的自定义模型类扩展

标签 javascript extjs extjs4 extjs4.1

如何从 extjs 中的自定义模型进行扩展。

当我在下面的示例中引用 BusinessUser 类中的字段时,是否有任何方法可以直接合并 User 和 BusinessUser 字段的字段。

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'name',  type: 'string'},
        {name: 'age',   type: 'int'},
        {name: 'phone', type: 'string'},
        {name: 'alive', type: 'boolean', defaultValue: true}
    ],
});

Ext.define('BusinessUser', {
    extend: 'User',
    fields: [
        {name: 'businessType',  type: 'string'},
        {name: 'company', type: 'string'}
    ],
});

最佳答案

您不需要手动加入字段,因为它是自动完成的。根据您的问题检查以下代码中的输出:

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'name',  type: 'string'},
        {name: 'age',   type: 'int'},
        {name: 'phone', type: 'string'},
        {name: 'alive', type: 'boolean', defaultValue: true}
    ],
});

Ext.define('BusinessUser', {
    extend: 'User',
    fields: [
        {name: 'businessType',  type: 'string'},
        {name: 'company', type: 'string'}
    ],
});

// instantiating a User object
var u = Ext.create('BusinessUser', {
    name: 'John Doe', 
    age: 30, 
    phone: '555-5555'
});

// instantiating a BusinessUser object
var bu = Ext.create('BusinessUser', {
    name: 'Jane Doe', 
    age: 40, 
    phone: '555-5556', 
    businessType: 'analyst', 
    company: 'ACME'
});

console.log(Ext.getClassName(bu)); // "BusinessUser"
console.log(Ext.getClassName(u));  // "User"
console.log(u  instanceof User); // true
console.log(bu instanceof User); // true
console.log(u  instanceof BusinessUser); // false
console.log(bu instanceof BusinessUser); // true
console.log(u  instanceof Ext.data.Model); // true
console.log(bu instanceof Ext.data.Model); // true
console.log(u  instanceof Ext.data.Store); // false, just to check if it's not returning true for anything
console.log(bu instanceof Ext.data.Store); // false
console.log("name"    in u.data);  // true
console.log("name"    in bu.data); // true
console.log("company" in u.data);  // false
console.log("company" in bu.data); // true

关于javascript - 从 ExtJS 4 中的自定义模型类扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877565/

相关文章:

javascript - 从左侧推/滑动菜单。需要通过单击整个页面来隐藏菜单?

javascript - 周/年选择器 jQuery 插件

javascript - JQuery为每个 anchor href替换缩略图img src

javascript - 如何动态更改 Ext js 存储数据

ExtJS4 - 网格存储页面大小

javascript - ExtJs 为 Ext.MessageBox 创建自定义图标

javascript - 需要在网站上显示上次更新的数据

javascript - 在 extjs 中添加 html 编辑器字段所需的验证器?

ios - 需要将 Sencha Touch + NodeJs + MongoDB 应用程序转换为 native 应用程序

javascript - 单击不同按钮触发文件选择 extjs4.1