EXT JS 5:为什么我不能获得引用类型的模型对象

EXT JS 5 : why can I not get the model object of my reference type

本文关键字:引用类型 模型 对象 不能 JS 为什么 EXT      更新时间:2023-09-26

我有以下模型:

Ext.define('MyApp.model.Container', {
    extend : 'Ext.data.model',

    requires : ['MyApp.model.Item','MyApp.model.User'],

    items : [
        {
            name : 'user',
            mapping : 'user',
            reference : 'MyApp.model.User',
            unique : true
        },
        {
            name : 'item',
            mapping : 'item',
            reference : 'MyApp.model.Item'
        }
    ],

    //******************************
    //*      GETTERS / SETTERS     *
    //******************************
    getUser : function() {
        var me = this;
        return me.get('user');
    },

    getItem: function() {
        var me = this;
        return me.get('item');
    }
});

当我得到用户或项目时,我得到的不是用户模型或项目模型,而是对象。如何获取Item模型或User模型而不是Object。

编辑1:

我找到了一个解决方案,但我不知道它是否是一个好的解决方案:

Ext.define('MyApp.model.Container', {
    [...]    
    //******************************
    //*      GETTERS / SETTERS     *
    //******************************
    getUser : function() {
        var me = this;
        return new MyApp.model.User(me.get('user'));
    },

    getItem: function() {
        var me = this;
        return new MyApp.model.Item(me.get('item'));
    }
});

编辑2:

在我的第一个例子中,当我加载我的商店时,当我得到User时,我会得到这个,例如:

store
    => getAt(0)
        => data
            => item [...]
            => utilisateur
                => id : '1'
                => name : 'john doe'
                => profil : 'admin'

我想要:

store
    => getAt(0)
        => data
            => item [...]
            => utilisateur
                => $className : "MyApp.model.User"
                => id : '1'
                => name : 'john doe'
                => profil : 'admin'
                => (others properties of model object)
                => (getters and setters functions)

编辑3:

对不起。。。我的问题是,我在字段声明中使用项,而不是字段。。。。。。。。。。。。。。。。

Ext.define('MyApp.model.Container', {
    extend : 'Ext.data.model',

    requires : ['MyApp.model.Item','MyApp.model.User'],

    fields : [
        {
            name : 'user',
            mapping : 'user',
            reference : 'MyApp.model.User',
            unique : true
        },
        {
            name : 'item',
            mapping : 'item',
            reference : 'MyApp.model.Item'
        }
    ],

    //******************************
    //*      GETTERS / SETTERS     *
    //******************************
    getUser : function() {
        var me = this;
        var user = me.user;
        if(user) {
            return user;
        } else {
            return null;
        }
    },
    getItem: function() {
        var me = this;
        var item = me.item;
        if(item) {
            return item;
        } else {
            return null;
        }
    }
});

谨致问候。

引用字段已经在存储模型的文件夹中查找,因此您只需要修复引用配置。

items : [
    {
        name : 'user',
        mapping : 'user',
        reference : 'User', <---
        unique : true
    },
    {
        name : 'item',
        mapping : 'item',
        reference : 'Item' <--
    }
]

您也不需要定义函数来获取模型,因为Ext将自动添加getUser()和getItem()。

要得到答案,请记住配置的名称,然后查看第三个Edit。