我有一個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