我上过这堂课:
Ext.define('Customer_Portal_UI.FormParameters', {
constructor: function (c) {
Ext.each(this.ParticipantFormParameters, function (field) {
if (field.toFieldSet != null) {
var fieldSetName = c.targetFieldSetPrefix + field.toFieldSet;
field.toFieldSet = fieldSetName;
}
});
},
ParticipantFormParameters: [
{ name: 'service_executive_account_Number', visible: false },
{ name: 'firstname', visible: true, displayText: 'Firstname', toFieldSet: 'GeneralInfoFS', allowBlank: false },
{ name: 'lastname', visible: true, displayText: 'Lastname', toFieldSet: 'GeneralInfoFS', allowBlank: false },
{ name: 'gendercode', visible: true, hasCheckbox: true, displayText: 'Gender', toFieldSet: 'GeneralInfoFS', xtype: 'combo', allowBlank: false },
]
});
如果我这样做一次:
var formParams = Ext.create(Customer_Portal_UI.FormParameters, { targetFieldSetPrefix: 'add' });
console.log(formParams.ParticipantFormParameters[0].toFieldSet);
我会得到addGeneralInfoFS
。
但如果我多次创建此对象,我将获得addGeneralInfoFS, addaddGeneralInfoFS, addaddaddGeneralInfoFS
这里发生了什么?我试过了delete formParams
,但是当我再次初始化一个对象时,如果再次出现同样的问题,那就相同了。
是ExtJS还是javascript问题?我觉得很奇怪我需要努力简单地摧毁物体......
编辑:啊!我在documentation:
中找到了这个当在原型的原型中放置物品时,它们将是 在所有类的实例中共享。除非你特别想要 要做到这一点,你应该只把"原始"原型内部的类型 定义
现在的问题是如何在没有它们的情况下声明成员"在原型中#34; ?这很好,但ParticipantFormParameters
到底在哪里呢?我不希望它在配置中导致它变脏,我每次初始化对象时都必须拖动这个巨大的(真正的代码在数组中有更多项)块javascript标记?
我使用这种方法在我的应用程序中重构了一些东西,并且我完全并行化,直到这个工作......我无法重构......
谢谢。
答案 0 :(得分:1)
为什么要修改属性?使用两个不同的变量。这可能是解决方案:
(...)
Ext.each(this.ParticipantFormParameters, function (field) {
if (field.toFieldSet != null) {
var fieldSetName = c.targetFieldSetPrefix + field.toFieldSetRaw;
field.toFieldSet = fieldSetName;
}
});
},
ParticipantFormParameters: [
{ name: 'service_executive_account_Number', visible: false },
{ name: 'firstname', visible: true, displayText: 'Firstname', toFieldSetRaw: 'GeneralInfoFS', allowBlank: false },