我有一个ObjectManager,它保存对所有创建的对象的引用。问题在于ObjectManager没有引用创建的对象,而是似乎正在创建它的一个新实例。任何帮助,将不胜感激。谢谢!对象没有通过作为参考
var Fieldset = function (options) {
var fieldset = ($.extend(true, {
id: '',//Let's assume this has been overridden with 'MyFieldset' via the options param.
title: '',
accordion: '',
fields: [],
hidden: false,
Show: function() { $('#' + this.id).show() },
Hide: function() { $('#' + this.id).hide() }
}, options));
if (fieldset.id != null && fieldset.id != '')
ObjectManager.fieldsets[fieldset.id] = fieldset;//Save a reference to this object in the ObjectManager, so I can call ObjectManager.GetFieldset('MyFieldset'). A reference is only saved if an id is provided.
log(ObjectManager.GetFieldset(fieldset.id) == fieldset);//true
return fieldset;
}
编辑:
对不起,我还以为是清楚,我想这事。 ObjectManger没有什么特别之处。它只有一个属性和Get方法为我的每个对象。为了简单起见,我只包含fieldset属性和Getter。我希望这清除了我的意图。
var ObjectManager =
{
fieldsets: {},
GetFieldset: function (id) { return this.fieldsets[id]; }
};
EDIT2:
一些测试后,我发现了一些奇怪的...希望有人能为什么会这样向我解释。
var myFieldset = new Fieldset({ id: 'MyFieldset' });
log(myFieldset == ObjectManager.GetFieldset('MyFieldset'));//I just found that it is true in this case...
//... However, this is not the normal way I create Fieldsets... This is:
var editForm = new Form({
dataStore: function() { return ClientsDS; },
id: 'ClientEditForm',
fieldSets: [
new Fieldset({
id: 'ClientDetailsFieldSet',
title: 'Details',
fields: [
new Field({ id: 'ClientID', name: 'ID', property: 'ID', fieldType: 'hidden', value: '0' })
]
})
]
});
log(editForm.fieldSets[0] == ObjectManager.GetFieldset('ClientDetailsFieldSet'));//false
您还没有表明自己希望这段代码做实际上做,也没有什么。请澄清。 – cdhowie 2010-11-13 09:05:40
对象管理器从问题 – 2010-11-13 09:13:12
中缺失您的编辑没有很好地解决问题。目前还不清楚**代码实际上做了什么**和**你期望它做什么**。不要让我们猜测。 – cdhowie 2010-11-13 09:45:42