0

私がしようとしていること

フォームを保存または削除すると、簡単な通知がユーザーにポップアップ表示されます

私がやった事

events :{
    '#save-button click' : 'onSaveBUttonClick',
    '#delete-button click' : 'onDeleteButtonClick'
};

onDeleteButtonClick = function(){

    //popup appears to confirm delete
    this.model.on('sync',function(model){ 
        model.off('sync');
        alert("project deleted"); 
    },this);
    this.model.destroy();
}

onSaveBUttonClick = function(){

    //popup appears to confirm delete
    this.model.on('sync',function(){ 
        model.off('sync');
        alert("project Saved"); 
    },this);
    this.model.save(); 
}

問題

削除ボタンをクリックして、「選択」、「キャンセル」と言います。ここでmodel.on('sync')はモデルにバインドされています。

これで、 save と confirm をクリックすると、model.on('sync')が 2 回呼び出されます (1 回は削除ボタンでバインドされ、もう 1 回は保存ボタンでバインドされます)。

だから私は2つのポップアッププロジェクトを最初に削除し、その後プロジェクトを保存しています。

どうすればこれを回避できますか?

4

1 に答える 1

2

model.saveおよびで成功オプションを使用できます。model.destroy

destroy model.destroy([options])
HTTP DELETE リクエストを Backbone.sync に委譲することにより、サーバー上のモデルを破棄します。jqXHR オブジェクトを返すか、モデルが New の場合は false を返します。オプション ハッシュで成功とエラーのコールバックを受け入れます。

save model.save([attributes], [options])
[...]
save は、オプション ハッシュで成功とエラーのコールバックを受け入れます。

あなたの方法は次のようになります

onDeleteButtonClick = function(){
    this.model.destroy({
        success: function() {
            alert("project deleted"); 
        }
    });
}

onSaveBUttonClick = function(){
    this.model.save(null, {
        success: function() {
            alert("project saved"); 
        }
    }); 
}
于 2013-01-15T10:52:17.077 に答える