2012-03-16 24 views
0

この場合、DOMから要素が削除されてもクリアをクリックすると、HttpメソッドのFirebugで消去されません。バックボーン削除モデル

var DecisionItemView = Backbone.View.extend({ 
     tagName: "li", 
     template: _.template($('#item-template').html()), 
     initialize: function() { 
      this.model.bind('change', this.render, this); 
      this.model.bind('destroy', this.remove, this); 
     }, 
     events:{ 
      "click span.decision-destroy": "clear" 
     }, 
     render: function() { 
      $(this.el).html(this.template(this.model.toJSON())); 
      return this; 
     }, 
     clear: function() { 
      var answer = confirm("Are you sure you want to delete this decision?"); 
      if (answer) { 
       this.model.destroy({ 
        success: function() { 
         console.log("delete was a success"); 
        } 
       }); 
      } 

     }, 
     remove: function(){ 
      $(this.el).remove(); 
     } 
    }); 

答えて

2

モデルにはIDがありますか?そうでない場合、destroyメソッドはhttp要求を起動しません。

この

var M=Backbone.Model.extend({ 
    url:'/echo/json/' 
}); 

var DecisionItemView = Backbone.View.extend({ 
     tagName: "li", 
     initialize: function() { 
      this.model.bind('change', this.render, this); 
      this.model.bind('destroy', this.remove, this); 
     }, 
     events:{ 
      "click span.decision-destroy": "clear" 
     }, 
     render: function() { 
      var txt=(this.model.get("id")) ? "Clear with id":"Clear without id"; 
      $(this.el).html("<span class='decision-destroy'>"+txt+"</span>"); 
      return this; 
     }, 
     clear: function() { 
      var answer = confirm("Are you sure you want to delete this decision?"); 
      if (answer) { 
       this.model.destroy({ 
        success: function() { 
         console.log("delete was a success"); 
        } 
       }); 
      } 

     }, 
     remove: function(){ 
      $(this.el).remove(); 
     } 
}); 

var m1=new M({id:1}); var m2=new M(); 
var view1=new DecisionItemView({model:m1}); 
$("ul").append(view1.render().$el); 
var view2=new DecisionItemView({model:m2}); 
$("ul").append(view2.render().$el); 

とフィドルモデルは、id属性を持っていない場合、HTTP Deleteメソッドが呼び出されないことを指摘しhttp://jsfiddle.net/rSJP6/

+0

感謝をチェックするためのいくつかのコード。私は実際にHTTP Delete呼び出しを行わずにモデルを破壊する必要がありました。これを達成するには、モデルを破壊する前に 'this.unset(" id ");'を実行するだけです。私はBackboneのドキュメントでこの動作を参照していないので、もう一度感謝しています。 –

関連する問題