2015-10-17 89 views
-1

這個問題與jQueryUI的對話框沒有多大關係,還有更多關於JavaScript的問題。將回調變量傳遞給回調方法

我將一些變量傳遞給ayb.dialogError(),並用它們來創建一個對話框。然後我傳遞不同的值,但第一個仍然使用。

下面的腳本被壓縮以突出顯示問題,完整的腳本位於https://jsbin.com/muhijodima

open回調中,如何訪問傳遞給ayb.dialogError()的變量?

$(function(){ 

    ayb={}; 
    ayb.dialogErrorElem=undefined; 

    ayb.dialogError=function(t,e) { 
     if (typeof ayb.dialogErrorElem === 'undefined') { 
      ayb.dialogErrorElem=$('<div/>').appendTo('body').dialog({ 
       open: function(event, ui){ 
        console.log('dialog.open',t,e); 
        //t=function(){return t;} 
        //e=function(){return e;} 
       }, 
      }); 
      console.log(ayb.dialogErrorElem); 
     }; 
     ayb.dialogErrorElem.dialog('open'); 
    } 

    $('#e1').click(function(){ayb.dialogError('Title1',['error1-1','error1-2'])}); 
    $('#e2').click(function(){ayb.dialogError('Title2','error2-1')}); 

}); 
+0

你是什麼意思「變量傳遞給ayb.dialogError()」? 't'和'e'參數?它們應該在回調中可用。 – hindmost

+0

'',''尾隨逗號?在console.log('dialog.open',t,e)之後;'? – guest271314

+0

@ behindmost但他們不是。在jsbin演示中,請嘗試單擊其中一個按鈕,然後單擊其中一個按鈕。第二次,'e'和't'參數仍然首次使用這些參數。 – user1032531

回答

0

我希望這是不是這樣做的,但傳遞的參數是最好的方式可用於回調的open

下面簡明的腳本突出概念,並在https://jsbin.com/segoxewape/edit?html,output完整的腳本。

如果有更好的方法使回調中可用的參數(我確信有這些參數),請評論。

ayb.dialogError=function(t,e) { 
    getEm=function(){return {e:e,t:t};} 
    var v={e:e,t:t}; //Won't work 
    if (typeof this.dialog === 'undefined') { 
     this.dialog=$('<div/>', {}) 
     .dialog({ 
      open: function(event, ui){ 
       console.log('Wrong values in dialog.open!',t,e,v.t,v.e); 
       var o=getEm(); 
       console.log('Right values!',o); 
      } 
     }); 
    }; 
    this.dialog.dialog('open'); 
} 
0

if (typeof ayb.dialogErrorElem === 'undefined') {

ayb.dialogErrorElemundefinedtwobutton

jsbin的點擊https://jsbin.com/rugarizedo/edit?html,output

+0

是的,那是我的意圖,因爲我認爲這樣做是浪費的,而且我明白爲什麼我得到的結果與他們應該完全一樣,在「open」回調中,我希望使用一些額外的回調獲得'e'和't'值。 – user1032531

+0

嘗試在'close'事件中將'ayb.dialogErrorElem'設置回'undefined'? – guest271314

+0

我欣賞你的帖子和我同意每次創建元素或將其設置回'undefined'都行,但問題是如何在回調中使用傳遞的參數。 – user1032531