2013-03-22 99 views
0

我無法弄清楚我做錯了什麼。我的成功和錯誤回調不會觸發,我從服務器返回JSON響應。任何想法,我在哪裏搞砸了?Backbone銷燬功能的成功回調不會觸發

mysite.city.delete_photo = { 
    "Model": Backbone.Model.extend({ 
     "id": "deletePhoto", 
     "initialize": function initialize(id) { 
      this.url = "/assets/ajax/delete_image.php?img_id=" + id; 
     } 
    }), 
    "View": Backbone.View.extend({ 
     "initialize": function initialize(id) { 
      _.bindAll(this, 
       "render", 
       "success"); 

      this.model = new mysite.city.delete_photo.Model(id); 

      this.render(); 
     }, 
     "render": function render() { 
      this.model.destroy({ 
       "cache": false, 
       "success": this.success, 
       "error": this.error 
      }); 
     }, 
     "success": function success(model, data) { 
      console.log("test"); 
     }, 
     "error": function error() { 
      message('error', 'This image could not be deleted.'); 
     } 
    }) 
}; 
+2

縮進。絕對縮進。 :) – sje397 2013-03-22 13:34:18

+0

我的編碼風格的作品。這不是縮小它的縮進。 – 2013-03-22 13:38:27

+0

我在開玩笑。我對文檔的閱讀沒有提供View類的成功和錯誤屬性。也許你可以在模型中添加'sync'屬性,並將錯誤和成功處理程序作爲選項傳遞給它? – sje397 2013-03-22 13:47:25

回答

0

successerror不是型號的功能,但兩者都對模型的提取和保存方法的回調。與error回調

model.fetch({success: function(model, response, options) { 
    console.log('success triggered'); 
}); 

相同的邏輯:以打擊代碼獲取時,你可以解僱成功或錯誤事件。

+0

我不同意。你應該能夠在銷燬函數中有成功和錯誤回調http://documentcloud.github.com/backbone/#Model-destroy – 2013-03-22 13:58:28

+0

你是對的,模型中的很多方法都有成功和錯誤回調,例如摧毀方法。它是一樣的邏輯如何銷燬方法來引發成功或錯誤,如model.fetch。 – Shuping 2013-03-22 14:03:21

0

行之後

this.model = new mysite.city.delete_photo.Model(id); 

應該是:

this.model = new mysite.city.delete_photo.Model({'id':id}); 

在第一種情況下Id沒有設置在所有的模型和與destroy返回false,甚至沒有發出一個DELETE請求服務器,因爲該型號沒有ID並且被認爲是new

http://backbonejs.org/#Model-destroy