2
我正在匿名函數內進行AJAX調用。當成功回調發生時,我可以設置自定義的JS對象id和其他來自數據服務器的重要信息。AJAX成功後不會設置匿名函數
我將a.target.id設置爲返回的data.id後,一切都很正常。
在我正在調用一個函數來使用新更新的自定義JS對象進行一些工作的步驟中,我剛剛使用來自服務器的響應數據進行了更新。我將該對象的父對象傳遞給該對象的所有子對象的方法。
然而,正如你可以在抽點照片上的最後一個例子中看到的a.target.parent.children [0] .ID不是收集和/或它在那裏從未設置的ID。
當使用匿名函數時,我必須在AJAX調用期間丟失對該對象的引用。
這裏是所有的代碼。我如何失去參考?或者,當AJAX調用返回時,如何維護對父級子項的引用?
我從來沒有發生過這種事情,讓我相信它與匿名函數有關。
var horizontalPositioner = function (horizontals) {
var hpa = ['?horPositions='];
for (var i = 0; i < horizontals.children.length; i += 1) {
hpa.push(horizontals.children[i].id + ':' + horizontals.children[i].position + ',');
};
hpa[i] = hpa[i].replace(',', '');
dataBase.update(dbPart('horizontal' + hpa.join('')));
};
this.subscribe.call(this, e.horizontaladded, function (a, fn) {
//
if (!a.extra.owner.id) {
return;
};
(function (a) {
dataBase.insert(
dbPart(
['horizontal?a=', a.extra.owner.instanceName, '&id=', a.extra.owner.id].join(''),
a.target
),
dbCB(
function (data, status) {
if (status === 'error') { return; };
a.target.id = data.id,
a.target.HTML().addClass('alum_' + data.id),
a.target.finish.id = data.finishID,
a.target.size.id = data.sizeID,
a.target.siteLine.id = data.sitelineID;
//
//reposition horizontals
// setTimeout(function() { horizontalPositioner(a.target.parent); }, 1000);
debugger
horizontalPositioner(a.target.parent);
if (fn) { processCallbacks(data, status, fn); };
//very last
events.publishDatabaseCallbacks(e.horizontaladded,
eArgs(a.bay, { data: data, instanceName: 'horizontal', ownerid: a.extra.owner.id, id: data.id }));
},
function (xhr, status, errorThrown) { console.log('ERROR adding horizontal'); })
);
}(a));
}, true);
不看'a.target'? – user2246674