2011-08-01 10 views
1

我試圖執行一個對象中聲明的回調(照片),從另一個對象具有「照片」(庫)列表我想要回調函數來修改它所屬的確切對象。我有這樣的事情:Javascript回調修改它所屬的對象

var photo= function(){ 
this.Id; 
this.Url; 
this.someCallBack = function(event, ui, object){ 
    this.Id = object.Id; 
    this.Url = object.Url; 
} 
} 

var gallery = function(){ 
this.Name; 
this.PhotoList = new Array(); 
this.Draw = function(){ 
    for(var i =0; i < this.PhotoList.length; i++){ 
    var self = this; 
    $('#'+this.PhotoList[i].Id).droppable({drop:function(event, ui){ 
    self.PhotoList[i].someCallBack(event, ui, new{Id = 15, Url = 'someUrl.jpg'}); 
    } 
    }); 
    } 
} 
} 

事件是下降(從jQuery UI的可棄),我嘗試,但它簡化版,工作,還有一個「不能調用方法‘someCallBack’未定義的」錯誤。

目標是在每個回調中的「圖庫」列表中修改原始對象,以便在完成拖動並保存後可以將列表拿來。

有沒有辦法實現我之前描述的行爲?

我很感激任何幫助。

感謝

+0

好像你使用jQuery? –

+0

是的,我使用jQuery,我應該改變標題或問題中的東西嗎?謝謝 –

回答

1

除了從someCallback在拍照功能的聲明無效,你可以嘗試使用$('#somePhoto').data('the-photo-object', photo)來存儲您的照片對象,並使用$('#somePhoto').data('the-photo-object')檢索從jQuery的元素你的照片對象在drop事件回調會爲你節省一些頭痛。

而不是

{drop:function(event, ui){ 
    self.PhotoList[i].someCallBack(event, ui, new{Id = 15, Url = 'someUrl.jpg'}); 
}} 

這將是減少混亂:

// creating a new photo object and assigning it to a jquery element 
var aPhoto = new photo(); 
$('#draggable-photo').data('the-photo-object', aPhoto); 

// retrieving photo objects from the dom that is being dragged. 
{drop:function(event, ui){ 
    var droppable = $(this); 
    var draggable = ui.draggable; 
    // assuming draggable is photo, droppable is gallery 
    var photo = draggable.data('the-photo-object'); 
    photo.someCallBack(event, ui, new{Id = 15, Url = 'someUrl.jpg'}); 
}} 
0

從這個小的代碼片段,我真的不遵循碼流或看到足夠的信息來把它做成的jsfiddle,所以我會在錯誤的我看到的只是發表評論。

我在代碼中看不到任何地方,你實際上將someCallback函數分配給對象。也許你的意思是此代碼:

var photo= function(){ 
this.Id; 
this.Url; 
this.someCallBack(event, ui, object){ 
    this.Id = object.Id 
    this.Url = object.Url 
} 
} 

是這個實際上附加功能的對象,刪除了一些空操作語句,變「對象」到「目標文件」因此從來關於「對象的任何混淆「類,並添加缺少的分號:

var photo = function(){ 
    this.someCallBack = function(event, ui, obj){ 
     this.Id = obj.Id; 
     this.Url = obj.Url; 
    } 
} 

而且缺少在線路的末端,不確定很多分號你爲什麼要當你不使用它們通過事件和UI的someCallback功能。

+0

謝謝,我要糾正這些錯誤,完整的代碼是更長的時間,我只是複製一些片斷,但不幸的是,這不是問題:( –