record.getData 不是函数

Posted

技术标签:

【中文标题】record.getData 不是函数【英文标题】:record.getData is not a function 【发布时间】:2013-05-25 07:46:57 【问题描述】:

我尝试使用 sencha 架构师(extjs 4.2.0)打开窗口,但出现此错误:

record.getData is not a function

我的代码(在我的控制器中)是:

Ext.define('ModuleGestion.controller.MyController', 
    extend: 'Ext.app.Controller',

    MajUtilisateurApplicatif: function(record) 
        var view = Ext.widget('FormUtilisateurApplicatif');      
        view.down('form').loadRecord(record);
    ,

    init: function(application) 
        this.control(
            "gridpanel#GridUtilisateursApplicatifs": 
                itemdblclick: this.MajUtilisateurApplicatif
            
        );
    

);

有人可以帮助我吗?

【问题讨论】:

【参考方案1】:

请务必阅读documentation for itemdblclick。您会注意到为事件传递的参数为:按顺序

这个(视图) 记录 项目 e 电子选择

本质上,您正在尝试加载带有记录视图的表单,这是不正确的。

我建议像这样改变你的方法:

MajUtilisateurApplicatif: function( view, record, item, e, eOpts ) 
   var me = this,
       win = Ext.widget('FormUtilisateurApplicatif');      
   win.down('form').loadRecord(record);

最佳做法是始终枚举从事件侦听器传递给您在控制器中创建的自定义方法的参数。这不仅可以帮助您避免上述错误,而且还可以更有帮助地与阅读您的代码的其他开发人员准确地交流他们必须在您的方法中处理哪些传入参数。

希望这会有所帮助。

【讨论】:

你好,我用这个例子:peterkellner.net/2012/04/17/…我按组件更改事件绑定“OnFormAfterRender”的抽象组件。谢谢! 嗯,这个例子对我来说有点令人费解。我不确定在窗口中设置自定义属性有什么意义,只是为了重用它来设置表单中的值。由于表单已经属于窗口,因此就像您之前所做的那样,简单地加载带有记录的表单似乎是一种更好的方法(并且代码更少)。您在原始示例中遇到的唯一问题是您的函数参数不正确。无论如何,只要我的 0.02 美元。

以上是关于record.getData 不是函数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 recorder.js 对象调用此函数“.record()”?

Sqoop 导出作业的 sqoop.export.records.per.statement 是不是有限制?

如何更改 C# Record 构造函数的行为

为啥 Record<string, any> 可以等于函数?

如何更改 C# Record 构造函数的行为

如何指定 cx_Oracle 存储函数 RECORD 返回类型?