0

当我在 ExtJs 4.2 MVC 中使用关联时,我遇到了一个问题,我想出了一个解决方案。

问题 Stmt:我有一个填充了 Model/Store 的网格页面:问题。单击网格上的记录时,应该能够看到另一个模型的评论。每个问题可以有很多评论。

示例 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 属性,它运行良好。这个属性是什么“原始”?当我在萤火虫中评估“记录”时,它会显示“原始”“数据”和许多对象。数据部分映射名称参数并填充值。原始部分具有相同的 JSON 结构,我已使用它来检索面板的值。这是正确的方法吗?

4

2 回答 2

2

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

于 2013-09-11T17:43:30.357 回答
0

“原始”提供从“后端”接收的数据,但“记录”提供数据,但通过模型“转换”(假设您在“模型”中应用了一些“公式”或“格式”)。抱歉回复晚了!!

于 2018-12-02T08:09:55.660 回答