zouber / Fanshop

1 stars 0 forks source link

js 利用傳遞函式當作函數參數的方式,達到更好的程式碼 reuse #517

Closed zouber closed 9 years ago

zouber commented 9 years ago

最近在 common.js 裏面新增了一個函數 showPromptWithConfirm() 主要也是顯示系統提示用,和之前的 showPrompt() 主要的不同在於這個會需要使用者點確認才會有動作,我希望這個函數是可以通用的,也就是在任何頁面,只需要呼叫這個函數,就能夠長出一個提示框,但問題是每個不同的提示視窗想要觸發的動作都未必相同,所以感覺上這個"動作" 也需要做為參數才能達到既共用,但後續動作各自不同的需求,為了達到這個目的,我定義了兩個參數

confirm_func cancel_func

在傳送時,我用匿名函式的方式傳遞,類似這樣:

__showPromptWithConfirm('確認送出訂單?', {
    'vid': vendor_id,
    'cancel_func': function(btn_DOM){
         // do something
     },
     'confirm_func': function(btn_DOM){
         // do something
     }
});

在 __showPromptWithConfirm() 裏面只要發現有傳送 confirm_func cancel_func 就會分別在點擊 "確認" "取消" 時被呼叫,經過實驗證實這是可行的

zouber commented 9 years ago

實做 issue #517 中提及的效果

zouber commented 9 years ago

僅為記錄功能,close

zouber commented 9 years ago

利用 issue #517 提到的功能,實做新版購物車裏面當超量購買時的提示框(需要確認鈕),並藉由製作此項功能,發現既有 __showPromptWithConfirm() 的問題(原本用 live 函式綁定 handlers 會造成後續生成按鈕被綁定的 handlers 不斷疊加, 而非單次只綁特定一個),並改正,並針對 按鈕提示字樣 和 是否要顯示 確定以及取消按鈕是否要顯示,也提供了參數以控制