2013-01-25 37 views
0

嗨,我需要你對以下幫助:骨幹收集作爲鏈表和持續模型

我定義骨幹集合充當一個鏈表:在集合中的每個型號都有一個參考其前身以及繼任者。

將新模型插入到集合中會觸發一個事件,該事件更新前驅和後繼模型以引用新插入的模型並將這些模型存儲到數據庫。

模型序列是關鍵,應用程序必須保持無狀態。

問題:當緊張的用戶快速按下添加按鈕時,我發現數據庫顯示了更多的模型實例,然後在我的應用程序中找到。 (我期望這是由於異步AJAX調用數據庫)

我已經考慮覆蓋模型保存功能,並在一個AJAX調用中執行模型更新,通過回調排隊模型保存調用。

但是我想我在吠叫錯誤的樹,並期望有更好的解決方案來解決這個問題。

非常感謝您的幫助。

回答

1

最簡單的解決方案是禁用add按鈕,直到前一個請求完成。讓我們假設你有一個#add按鈕視圖:

addClicked: function(e) { 
    var $add = this.$("#add"); 
    var model = new Model(this.parseAttributesFromView()); //or something... 

    //disable add button 
    $add.attr('disabled', true); 

    model.save().done(function() { 
    //enable add button after save succeeds 
    $add.attr('disabled', false); 
    }); 
} 

另外,您可以debounce點擊事件處理程序,以便它只能使用一次,每次n毫秒執行:

//only allow add once every 100ms 
addClicked: _.debounce(function() { 
    //.. 
}, 100, true) 

在任何情況下實施如果您可以在視圖級別解決問題,那麼基於數據包或隊列的解決方案看起來過分了。

+0

看着更多的要求,我決定在單獨的模型中註冊序列。謝謝你的幫助。 – user1833790