Extjs 5,数据模型关联&加载嵌套数据 [英] Extjs 5, data model association & load nested data

查看:110
本文介绍了Extjs 5,数据模型关联&加载嵌套数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图使这项工作....

trying to make this work....

我想在两个对象模型上加载嵌套数据

I want to load nested data on two object model

Ext.application({
name : 'MyApp',

launch : function() {


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

        entityName: 'Address',

        fields: [ 

            {
                name: 'id',
                type: 'int'
            },
            {
                name: 'addressLine',
                type: 'string'
            },
            {
                name: 'city',
                type: 'string'
            },
            {
                name: 'created',
                type: 'date',
                dateFormat: 'time',
                persist: false
            }
        ]
    });


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

        entityName: 'User',

        fields: [ 
            {
                name: 'id',
                type: 'int'
            },
            {
                name: 'address',
                reference: 'Address'
            },
            {
                name: 'name',
                type: 'string'
            },
            {
                name: 'lastname',
                type: 'string'
            },
            {
                name: 'created',
                type: 'date',
                dateFormat: 'time',
                persist: false
            }
        ]
    });


    var user = new MyApp.model.User({
        "id": 1,
        "name": "Pedro",
        "lastname": "Carbonell",
        "address": {
            "id": 1,
            "addressLine": "Bailen 22",
            "city": "Barcelona",
            "created": 1420668866000
        },
        "created": 1420668866000
    });        

    console.info(user);
    console.info(user.getAddress());

}});

创建用户时无错,但是当我通过user.getAddress访问关联数据时()它返回一个异常:

It's result on no error when created the user, but when I access to associated data via user.getAddress() it returned an exception:

 Uncaught Error: The model ID configured in data ("[object Object]") has been rejected by the int field converter for the id fieldext-all-debug.js

尝试定义代理像内存或本地存储在模型定义上,但结果是一样的。

Try to define proxy like memory or localstorage on model definitions, but the result it is the same.

Ext fiddle: https://fiddle.sencha.com/#fiddle/h2d

Ext fiddle: https://fiddle.sencha.com/#fiddle/h2d

任何帮助将不胜感激! p>

Any help will be appreciated!

推荐答案

解决方案只能找到这个解决方案:当使用loadRawData ...

Solved, but only find this solution: when use loadRawData...

    var store = new Ext.data.Store({
        model: MyApp.model.User
    });

    store.loadRawData({
        "id": 1,
        "name": "Pedro",
        "lastname": "Carbonell",
        "address": {
            "id": 1,
            "addressLine": "Bailen 22",
            "city": "Barcelona",
            "created": 1420668866000
        },
        "created": 1420668866000
    });        

    console.info(store.first());
    console.info(store.first().getAddress());

在这个新小提琴中的样本: https://fiddle.sencha.com/#fiddle/h4e

sample at this new fiddle: https://fiddle.sencha.com/#fiddle/h4e

你是对的,有点薄,非常....

you'r right, ext is a bit flaky, very....

这篇关于Extjs 5,数据模型关联&加载嵌套数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆