ExtJs 4.2 :: GRID中“记录”和“原始”之间的区别

时间:2013-09-11 16:07:53

标签: extjs extjs-mvc extjs4.2

当我在ExtJs 4.2 MVC中玩协会时,我遇到了一个问题,我想出了一个解决方案。

问题Stmt:我有一个使用模型/商店填充的网格页面:问题。单击网格上的记录,应该能够看到注释,这是另一个模型。每个问题都可以有很多评论。

示例JSON:

   {
    "data": [
        {
            "id": 555,
            "status": "OPEN",
            "createDate": "04/29/2013",
            "comments": [
                {
                    "id": 1,
                    "commentDate": "19/02/2013",
                    "description": "Test"
                },
                {
                    "id": 2,
                    "commentDate": "29/01/2013",
                    "description": "Test 2"
                }
            ]
        }
    ],
    "total": 1,
    "success": true
}

控制器

Ext.define('app.IssuesC',
                {
                    extend : 'Ext.app.Controller',
                    stores : [ 'IssuesS','CommentsS'],
                    models : [ 'IssueM', 'CommentsM'],
                    views : [ 'issue.IssueDetailV',
                            'issue.IssueGridV',
                            'issue.IssueCommentsV'],
                    refs : [ {
                        ref : 'comments',
                        selector : 'issuecomments'//xtype for issue.IssueCommentsV
                    }, {
                        ref : 'issuedetail',
                        selector : 'issuedetailv'//xtype for issue.IssueDetailV
                    }, {
                        ref : 'issuegrid',
                        selector : 'issuegrid'//xtype for issue.IssueGridV
                    } ],
                    onLaunch : function(app) {
                        this.control({
                                    'issuegrid' : {
                                        itemdblclick : this.onGridItemDblClick,
                                        select : this.onSelectIssueShowComments
                                    }
                                });
                    },

                    onGridItemDblClick : function(view, record, item, index, e) {
                        var IssueDetailV = Ext.widget('issuedetailv');
                            IssueDetailV.down('form').getForm().loadRecord(record);

                    },

                    onSelectIssueShowComments : function(selection,record, index, eOpts) {
                        this.getComments().setRecord(record.raw);

                    }
                });

模型和关联设置

Issue --> associations --> Comment

IssueM:

hasMany : {model:'CommetM',
name : 'commentsassociation'} 

CommentM: 

belongsTo : {model : 'IssueM'}

没有任何问题。意见非常好。在单击控制器部分中,我可以在面板中查看注释列表(位于主网格下方)。我在面板中使用了XTemplate的TPL属性,它工作正常。什么是这个属性" raw"?当我评估"记录"在萤火虫中它显示我" raw" "数据"和许多对象。数据部分映射name参数并填充值。原始部分具有相同的JSON结构,我用它来检索面板的值。这是正确的方法吗?

2 个答案:

答案 0 :(得分:2)

Raw只是从服务器发送的原始JSON数据。然后,配置的阅读器会解析该原始有效负载并创建记录对象。 读者在商店代理中定义:docs.sencha.com/extjs/4.1.3/#!/api/Ext.data.reader.Reader

答案 1 :(得分:0)

“原始”给出的是从“后端”接收到的,但是“记录”给出的数据是通过模型“转换”的(假设您在“模型”中应用了一些“公式”或“格式”)。对不起,我晚答复!